format('Ymd'); $allReportsUrls = []; try { $SHUSER = m3_user() !== '' ? Str::upper(trim(m3_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(); $R428US = isset($ICM428M->R428US) ? $ICM428M->R428US : ''; // User $COMPANY = isset($ICM428M->R428CO) ? $ICM428M->R428CO : '110'; // Company $PLANT = isset($ICM428M->R428PL) ? $ICM428M->R428PL : '144'; // Plant $WHS = isset($ICM428M->R428WH) ? $ICM428M->R428WH : '322'; // WareHouse } // Warehouse Table $IC670M = DB::connection(config('m3.connection', 'pgsql'))->table('ic670m')->get(); // 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'); $WHDDA = $COMPANY . $PLANT . $WHS; 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 = []; if ($WHS == '321') { $files = Storage::disk('publicCL')->files(); } else { $files = Storage::disk('publicCL')->allFiles($WHS); } foreach ($files as $file) { // Get the file URL (if URL is configured in filesystems.php) $url = Storage::disk('publicCL')->url($file); $allReportsUrls[$file] = $url; } } catch (\Throwable $th) { Log::error($th); } return view('m3::liberty-theme.pages.OrderLinesOfClosed', compact('IC670M', 'ICM688M2', 'WHDDA', 'COMPANY', 'PLANT', 'WHS', 'REPORTDATEDisp', '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 { $SHUSER = m3_user() !== '' ? Str::upper(trim(m3_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(); $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 } // Warehouse Table $IC670M = DB::connection(config('m3.connection', 'pgsql'))->table('ic670m')->get(); // 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'); $WHDDA = $COMPANY . $PLANT . $WHS; 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 { $SHUSER = m3_user() !== '' ? Str::upper(trim(m3_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(); $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 } // Warehouse Table $IC670M = DB::connection(config('m3.connection', 'pgsql'))->table('ic670m')->get(); // 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'); // dd($toreportDate); $reportDateWD = isset($urlParams['REPORTDATE']) ? trim($urlParams['REPORTDATE']) : today()->format('Y-m-d'); $toreportDateWD = isset($urlParams['TOREPORTDATE']) ? trim($urlParams['TOREPORTDATE']) : today()->format('Y-m-d'); $WHDDA = $COMPANY . $PLANT . $WHS; 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 = ''; } if ($WHS == '321') { $prevMonthFile = 'Closedorderlinesreport_' . $reportDateWD . '-' . $toreportDateWD . self::XLSX_EXTENSION; } else { $prevMonthFile = $WHS . '/Closedorderlinesreport_' . $reportDateWD . '-' . $toreportDateWD . '-' . $WHS . self::XLSX_EXTENSION; } // MAK Store the File to Storage app(SpreadsheetExport::class)->store($ICM688M2Col, $prevMonthFile, 'publicCL'); return back(); } catch (\Throwable $th) { Log::error($th); } } // 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); $fileUrl = Storage::disk('publicCL')->url($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) } } }