format('Ymd'); $allReportsUrls = []; try { [$cOMPANY, $pLANT, $wHS] = self::userWarehouseContext('110', '144', '322'); // Warehouse Table // Get URL PARAMS $urlParams = count($request->all()) > 0 ? $request->all() : ''; $rEPORTDATEDisp = isset($urlParams['REPORTDATEDisp']) ? \DateTime::createFromFormat('Y-m-d', trim($urlParams['REPORTDATEDisp']))->format('Ymd') : today()->format('Ymd'); if ($rEPORTDATEDisp != '' && $cOMPANY != '' && $wHS != '' && $pLANT != '') { // Case 729: Add Currency code A1SHCURR FROM ICM666M $selectContent = " SELECT A5MACPKR, A5ONO, (SELECT A4REFORD FROM ICM688M1 WHERE A4MACPKR=A5MACPKR) AS A4REFORD, A5PART, A5RSVQTY, A5PACKED, A5RSVQTY - A5PACKED AS CALCULATED_COLUMN, A5SLUNPR * A5PACKED AS ANOTHER_CALCULATED_COLUMN, A5PMPWHT*A5PACKED AS WEIGHT, (SELECT A4SHSHNM FROM ICM688M1 WHERE A4MACPKR=A5MACPKR) AS A4SHSHNM , SHDT, SHTIME, CASE WHEN SHDT IS NULL THEN (SELECT SHDATA FROM ICM699M WHERE SHMACPKR=A5MACPKR AND SHTYPE='M3-Res-out' AND SHSOURCE='CloseShipmentCoChargeAPI' ORDER BY SHDT DESC, SHTIME DESC FETCH FIRST 1 ROWS ONLY) ELSE '' END AS REASON, A1SHCURR, CASE WHEN (SELECT A4SHIPTYPE FROM ICM688M1 WHERE A4MACPKR=A5MACPKR) = 'LTL' THEN (SELECT A4RATETCP FROM ICM688M1 WHERE A4MACPKR=A5MACPKR) * " . (100.00 - Config::get('arrays.misc.discountCarrierRateForCustomerPriceLTL')) / 100 . ' ELSE (SELECT A4RATETCP FROM ICM688M1 WHERE A4MACPKR=A5MACPKR) * ' . (100.00 - Config::get('arrays.misc.discountCarrierRateForCustomerPriceParcel')) / 100 . " END AS FREIGHT, A4SHIPTYPE, A4SHIPVIA1, A4SCAC, A4OFSTRM FROM ICM688M2 LEFT JOIN ICM699M ON SHMACPKR=A5MACPKR AND SHTYPE='M3-Res-out' AND SHDATA LIKE 'Success%' AND SHSOURCE='CloseShipmentCoChargeAPI' LEFT JOIN ICM666M ON A1DELNO=A5MACPKR AND A1ONO=A5ONO AND A1PKLN=A5BRADLN LEFT JOIN ICM688M1 ON A4MACPKR=A5MACPKR WHERE A5MACPKR IN ( SELECT DISTINCT AYMACPKR FROM ICM695M1 WHERE AYSTATUS IN ('Z','z') AND AYAPR8N002 = $rEPORTDATEDisp ) AND A5CO=$cOMPANY AND A5WHS=$wHS AND A5PLANT=$pLANT"; $iCM688M2 = DB::connection(config('m3.connection', 'pgsql')) ->select($selectContent); } else { $iCM688M2 = collect(); } // Get List of Files $allReportsUrls = self::reportUrls($wHS); } catch (\Throwable $th) { Log::error($th); } return view('m3::liberty-theme.pages.OrderLinesOfClosed', ['IC670M' => $iC670M, 'ICM688M2' => $iCM688M2, 'WHDDA' => $wHDDA, 'COMPANY' => $cOMPANY, 'PLANT' => $pLANT, 'WHS' => $wHS, 'REPORTDATEDisp' => $rEPORTDATEDisp, 'allReportsUrls' => $allReportsUrls]); } public static function exporttoExcel(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')); ini_set('memory_limit', '1024M'); try { [$cOMPANY, $pLANT, $wHS] = self::userWarehouseContext(); // Warehouse Table // Get URL PARAMS $urlParams = count($request->all()) > 0 ? $request->all() : ''; $reportDate = isset($urlParams['REPORTDATE']) ? \DateTime::createFromFormat('Y-m-d', trim($urlParams['REPORTDATE']))->format('Ymd') : today()->format('Ymd'); $toreportDate = isset($urlParams['TOREPORTDATE']) ? \DateTime::createFromFormat('Y-m-d', trim($urlParams['TOREPORTDATE']))->format('Ymd') : today()->format('Ymd'); $reportDateWD = isset($urlParams['REPORTDATE']) ? trim($urlParams['REPORTDATE']) : today()->format('Y-m-d'); $toreportDateWD = isset($urlParams['TOREPORTDATE']) ? trim($urlParams['TOREPORTDATE']) : today()->format('Y-m-d'); if ($reportDate != '' && $cOMPANY != '' && $wHS != '' && $pLANT != '') { // Case 729: Add Currency code A1SHCURR FROM ICM666M $selectContent = " SELECT (SHDT || ' ' || SHTIME) AS DATECLOSED, A5MACPKR, A5ONO, A4OFSTRM, A5PMPWHT*A5PACKED AS WEIGHT, A4SCAC, A4SHIPTYPE, (SELECT A4REFORD FROM ICM688M1 WHERE A4MACPKR=A5MACPKR) AS A4REFORD, A5PART, A5RSVQTY, A5PACKED, A5RSVQTY - A5PACKED AS CALCULATED_COLUMN, A5SLUNPR * A5PACKED AS ANOTHER_CALCULATED_COLUMN, (SELECT A4SHSHNM FROM ICM688M1 WHERE A4MACPKR=A5MACPKR) AS A4SHSHNM , CASE WHEN SHDT IS NULL THEN (SELECT SHDATA FROM ICM699M WHERE SHMACPKR=A5MACPKR AND SHTYPE='M3-Res-out' AND SHSOURCE='CloseShipmentCoChargeAPI' ORDER BY SHDT DESC, SHTIME DESC FETCH FIRST 1 ROWS ONLY) ELSE '' END AS REASON, A1SHCURR, CASE WHEN (SELECT A4SHIPTYPE FROM ICM688M1 WHERE A4MACPKR=A5MACPKR) = 'LTL' THEN (SELECT A4RATETCP FROM ICM688M1 WHERE A4MACPKR=A5MACPKR) * " . (100.00 - Config::get('arrays.misc.discountCarrierRateForCustomerPriceLTL')) / 100 . ' ELSE (SELECT A4RATETCP FROM ICM688M1 WHERE A4MACPKR=A5MACPKR) * ' . (100.00 - Config::get('arrays.misc.discountCarrierRateForCustomerPriceParcel')) / 100 . " END AS FREIGHT FROM ICM688M2 LEFT JOIN ICM699M ON SHMACPKR=A5MACPKR AND SHTYPE='M3-Res-out' AND SHDATA LIKE 'Success%' AND SHSOURCE='CloseShipmentCoChargeAPI' LEFT JOIN ICM666M ON A1DELNO=A5MACPKR AND A1ONO=A5ONO AND A1PKLN=A5BRADLN LEFT JOIN ICM688M1 ON A4MACPKR=A5MACPKR WHERE A5MACPKR IN ( SELECT DISTINCT AYMACPKR FROM ICM695M1 WHERE AYSTATUS IN ('Z','z') AND AYAPR8N002 BETWEEN $reportDate AND $toreportDate ) AND A5CO=$cOMPANY AND A5WHS=$wHS AND A5PLANT=$pLANT"; $iCM688M2 = DB::connection(config('m3.connection', 'pgsql')) ->select($selectContent); $newItem = ['DATECLOSED' => 'Close Date', 'A5MACPKR' => 'Delivery #', 'A5ONO' => 'Order #', 'A4OFSTRM' => 'Terms', 'WEIGHT' => 'Weight', 'A4SCAC' => 'Carrier', 'A4SHIPTYPE' => 'Mode (Parcel, Air, TL or LTL)', 'A4REFORD' => 'Order Type', 'A5PART' => 'Part #', 'A5RSVQTY' => 'Reserved', 'A5PACKED' => 'Packed', 'CALCULATED_COLUMN' => 'Back Order Qty', 'ANOTHER_CALCULATED_COLUMN' => 'Value Packed $', 'A4SHSHNM' => 'Customer name', 'REASON' => 'Failure Reason', 'A1SHCURR' => 'Currency Code', 'FREIGHT' => 'Freight']; $iCM688M2Col = collect($iCM688M2); $iCM688M2Col->prepend($newItem); // Count records before exporting to excel : Max 20K records are allowed $iCM688M2Count = $iCM688M2Col->count(); // Set Max allowed records $maxRecords = Config::get('arrays.maxRecCL'); if ($iCM688M2Count > $maxRecords) { return redirect()->back()->withInput()->with('message', 'Maximum allowed records for Excel Download is: ' . number_format($maxRecords) . ' current records: ' . number_format($iCM688M2Count) . ' , change your search criteria.'); } } else { $iCM688M2Col = ''; } // Download Excel // Add true at the end to include fields names in the Header return app(SpreadsheetExport::class)->download($iCM688M2Col, 'Closedorderlinesreport_' . $reportDateWD . '-' . $toreportDateWD . self::XLSX_EXTENSION); } catch (\Throwable $th) { Log::error($th); } } public static function StoreExcelToDisk(Request $request) { 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 { [$cOMPANY, $pLANT, $wHS] = self::userWarehouseContext(); // Warehouse Table // Get URL PARAMS $urlParams = count($request->all()) > 0 ? $request->all() : ''; $reportDate = isset($urlParams['REPORTDATE']) ? \DateTime::createFromFormat('Y-m-d', trim($urlParams['REPORTDATE']))->format('Ymd') : today()->format('Ymd'); $toreportDate = isset($urlParams['TOREPORTDATE']) ? \DateTime::createFromFormat('Y-m-d', trim($urlParams['TOREPORTDATE']))->format('Ymd') : today()->format('Ymd'); $reportDateWD = isset($urlParams['REPORTDATE']) ? trim($urlParams['REPORTDATE']) : today()->format('Y-m-d'); $toreportDateWD = isset($urlParams['TOREPORTDATE']) ? trim($urlParams['TOREPORTDATE']) : today()->format('Y-m-d'); if ($reportDate != '' && $cOMPANY != '' && $wHS != '' && $pLANT != '') { // Case 729: Add Currency code A1SHCURR FROM ICM666M $iCM688M2 = DB::connection(config('m3.connection', 'pgsql')) ->select(" SELECT (SHDT || ' ' || SHTIME) AS DATECLOSED, A5MACPKR, A5ONO, A4OFSTRM, A5PMPWHT*A5PACKED AS WEIGHT, A4SCAC, A4SHIPTYPE, (SELECT A4REFORD FROM ICM688M1 WHERE A4MACPKR=A5MACPKR) AS A4REFORD, A5PART, A5RSVQTY, A5PACKED, A5RSVQTY - A5PACKED AS CALCULATED_COLUMN, A5SLUNPR * A5PACKED AS ANOTHER_CALCULATED_COLUMN, (SELECT A4SHSHNM FROM ICM688M1 WHERE A4MACPKR=A5MACPKR) AS A4SHSHNM , CASE WHEN SHDT IS NULL THEN (SELECT SHDATA FROM ICM699M WHERE SHMACPKR=A5MACPKR AND SHTYPE='M3-Res-out' AND SHSOURCE='CloseShipmentCoChargeAPI' ORDER BY SHDT DESC, SHTIME DESC FETCH FIRST 1 ROWS ONLY) ELSE '' END AS REASON, A1SHCURR, CASE WHEN (SELECT A4SHIPTYPE FROM ICM688M1 WHERE A4MACPKR=A5MACPKR) = 'LTL' THEN (SELECT A4RATETCP FROM ICM688M1 WHERE A4MACPKR=A5MACPKR) * " . (100.00 - Config::get('arrays.misc.discountCarrierRateForCustomerPriceLTL')) / 100 . ' ELSE (SELECT A4RATETCP FROM ICM688M1 WHERE A4MACPKR=A5MACPKR) * ' . (100.00 - Config::get('arrays.misc.discountCarrierRateForCustomerPriceParcel')) / 100 . " END AS FREIGHT FROM ICM688M2 LEFT JOIN ICM699M ON SHMACPKR=A5MACPKR AND SHTYPE='M3-Res-out' AND SHDATA LIKE 'Success%' AND SHSOURCE='CloseShipmentCoChargeAPI' LEFT JOIN ICM666M ON A1DELNO=A5MACPKR AND A1ONO=A5ONO AND A1PKLN=A5BRADLN LEFT JOIN ICM688M1 ON A4MACPKR=A5MACPKR WHERE A5MACPKR IN ( SELECT DISTINCT AYMACPKR FROM ICM695M1 WHERE AYSTATUS IN ('Z','z') AND AYAPR8N002 BETWEEN $reportDate AND $toreportDate ) AND A5CO=$cOMPANY AND A5WHS=$wHS AND A5PLANT=$pLANT "); $newItem = ['DATECLOSED' => 'Close Date', 'A5MACPKR' => 'Delivery #', 'A5ONO' => 'Order #', 'A4OFSTRM' => 'Terms', 'WEIGHT' => 'Weight', 'A4SCAC' => 'Carrier', 'A4SHIPTYPE' => 'Mode (Parcel, Air, TL or LTL)', 'A4REFORD' => 'Order Type', 'A5PART' => 'Part #', 'A5RSVQTY' => 'Reserved', 'A5PACKED' => 'Packed', 'CALCULATED_COLUMN' => 'Back Order Qty', 'ANOTHER_CALCULATED_COLUMN' => 'Value Packed $', 'A4SHSHNM' => 'Customer name', 'REASON' => 'Failure Reason', 'A1SHCURR' => 'Currency Code', 'FREIGHT' => 'Freight']; $iCM688M2Col = collect($iCM688M2); $iCM688M2Col->prepend($newItem); // Count records before exporting to excel : Max 20K records are allowed $iCM688M2Count = $iCM688M2Col->count(); // Set Max allowed records $maxRecords = Config::get('arrays.maxRecCL'); if ($iCM688M2Count > $maxRecords) { return redirect()->back()->withInput()->with('message', 'Maximum allowed records for Excel Download is: ' . number_format($maxRecords) . ' current records: ' . number_format($iCM688M2Count) . ' , change your search criteria.'); } } else { $iCM688M2Col = ''; } $prevMonthFile = self::storedReportName($wHS, $reportDateWD, $toreportDateWD); // MAK Store the File to Storage app(SpreadsheetExport::class)->store($iCM688M2Col, $prevMonthFile, 'publicCL'); return back(); } catch (\Throwable $th) { Log::error($th); } } private static function userWarehouseContext(string $defaultCompany = '', string $defaultPlant = '', string $defaultWarehouse = ''): array { $user = trim((string) m3_user()); if ($user === '') { return [$defaultCompany, $defaultPlant, $defaultWarehouse]; } $profile = DB::connection(config('m3.connection', 'pgsql'))->table('icm428m') ->select('R428CO', 'R428WH', 'R428PL') ->where('R428US', Str::upper($user)) ->first(); return [ $profile->R428CO ?? $defaultCompany, $profile->R428PL ?? $defaultPlant, $profile->R428WH ?? $defaultWarehouse, ]; } private static function reportUrls(string $warehouse): array { $disk = Storage::disk('publicCL'); $files = $warehouse === '321' ? $disk->files() : $disk->allFiles($warehouse); $urls = []; foreach ($files as $file) { $urls[$file] = $disk->url($file); } return $urls; } private static function storedReportName(string $warehouse, string $from, string $to): string { $name = 'Closedorderlinesreport_' . $from . '-' . $to; return $warehouse === '321' ? $name . self::XLSX_EXTENSION : $warehouse . '/' . $name . '-' . $warehouse . self::XLSX_EXTENSION; } // Download File public static function downloadFiles(Request $request) { $fileName = $request->filename; if (Storage::disk('publicCL')->exists($fileName)) { // File exists, retrieve content or URL // $content = Storage::disk('publicCL')->get($fileName); $fileNameOnly = strpos($fileName, '/') !== false ? substr($fileName, strpos($fileName, '/') + 1) : $fileName; // Download the file return Storage::disk('publicCL')->download($fileName, $fileNameOnly); } else { // Download the file (use code below) } } }