query('customer'); // // $customerName = $request->query('customer_name'); // // $items = WireMasterPacking::with('item') // // ->where('plant_id', $plant) // // ->where('wire_packing_number', $pallet) // // ->get() // // ->groupBy('item_id') // // ->map(function ($rows) { // // $first = $rows->first(); // // return (object) [ // // 'code' => $first->item->code, // // 'description' => $first->item->description, // // 'box_count' => $rows->count(), // // 'weight' => $rows->sum('weight'), // // ]; // // }) // // ->values(); // $items = WireMasterPacking::with('item') // ->where('plant_id', $plant) // ->where('wire_packing_number', $pallet) // ->get() // ->map(function ($row) { // return (object) [ // 'code' => $row->item->code, // 'description' => $row->item->description, // 'box_count' => 1, // each row = one box // 'weight' => $row->weight, // ]; // }); // $masterBox = WireMasterPacking::where('plant_id', $plant) // ->where('wire_packing_number', $pallet) // ->value('customer_po_master_id'); // $customer = CustomerPoMaster::find($masterBox); // $customerCode = $customer->customer_po ?? ''; // $customerName = $customer->customer_name ?? ''; // // $masterBox = WireMasterPacking::where('plant_id', $plant) // // ->where('wire_packing_number', $pallet) // // ->distinct('customer_po') // // ->count('customer_po'); // // $pallets = WireMasterPacking::where('plant_id', $plant) // // ->select('wire_packing_number', 'updated_at') // // ->distinct('wire_packing_number') // // ->orderBy('wire_packing_number') // // ->orderBy('updated_at', 'asc') // // ->get() // // ->pluck('wire_packing_number') // // ->values(); // // $currentPalletNo = $pallets->search($pallet) + 1; // // $totalBoxes = WireMasterPacking::where('plant_id', $plant) // // // ->where('wire_packing_number', $pallet) // // ->distinct() // // ->count('customer_po'); // // $boxLabel = $currentPalletNo . '/' . $totalBoxes; // $totalBoxes = WireMasterPacking::where('plant_id', $plant) // ->where('customer_po_master_id', $customerId) // ->distinct('wire_packing_number') // ->count('wire_packing_number'); // $completedPallets = WireMasterPacking::where('plant_id', $plant) // ->where('customer_po_master_id', $customerId) // ->select('wire_packing_number') // ->groupBy('wire_packing_number') // ->havingRaw( // 'COUNT(*) = COUNT(CASE WHEN wire_packing_status = ? THEN 1 END)', // ['Completed'] // ) // ->orderBy('wire_packing_number') // ->pluck('wire_packing_number') // ->values(); // $index = $completedPallets->search($pallet); // $currentPalletNo = ($index !== false) ? $index + 1 : 0; // $boxLabel = $currentPalletNo . '/' . $totalBoxes; // // $completedPallets = WireMasterPacking::where('plant_id', $plant) // // ->select('wire_packing_number') // // ->groupBy('wire_packing_number') // // ->havingRaw('COUNT(*) = COUNT(CASE WHEN wire_packing_status = ? THEN 1 END)', ['Completed']) // // ->orderBy('wire_packing_number') // // ->pluck('wire_packing_number') // // ->values(); // // $currentPalletNo = $completedPallets->search($pallet) != false // // ? $completedPallets->search($pallet) + 1 // // : 0; // // $boxLabel = $currentPalletNo . '/' . $totalBoxes; // $grossWeight = $items->sum('weight'); // $widthPt = 85 * 2.83465; // 85mm → points // $heightPt = 100 * 2.83465; // 100mm → points // $plantName = Plant::where('id', $plant)->value('name'); // $plantAddress = Plant::where('id', $plant)->value('address'); // $pdf = Pdf::loadView('pdf.wire-pallet', [ // 'product' => 'Submersible Winding Wire', // 'plantName' => $plantName, // 'plantAddress' => $plantAddress, // 'monthYear' => now()->format('M-y'), // 'branch' => '', // 'customerCode' => $customerCode, // 'customerName' => $customerName, // 'masterBox' => $boxLabel, // 'items' => $items, // 'grossWeight' => $grossWeight, // 'netWeight' => $grossWeight - 3.05, // 'pallet' => $pallet, // ])->setPaper([0, 0, $widthPt, $heightPt], 'portrait'); // return $pdf->stream("Pallet-{$pallet}.pdf"); // // $pdfPath = storage_path("app/public/Pallet-{$pallet}.pdf"); // // $pdf->save($pdfPath); // // $printerName = 'Tsc'; // // $output = []; // // $returnVar = 0; // // exec("lp -d {$printerName} " . escapeshellarg($pdfPath), $output, $returnVar); // // if ($returnVar == 0) { // // return response()->json([ // // 'status' => 'success', // // 'message' => "PDF sent to printer $printerName successfully." // // ]); // // } else { // // return response()->json([ // // 'status' => 'error', // // 'message' => "Failed to send PDF to printer $printerName.", // // 'output' => $output, // // 'code' => $returnVar // // ], 500); // // } // } /** * Store a newly created resource in storage. */ public function print(Request $request, $pallet, $plant) { $customerId = $request->query('customer'); $items = WireMasterPacking::with('item') ->where('plant_id', $plant) ->where('wire_packing_number', $pallet) ->get() ->map(function ($row) { return (object) [ 'code' => $row->item->code, 'description' => $row->item->description, 'box_count' => 1, // each row = one box 'weight' => $row->weight, ]; }); $masterBox = WireMasterPacking::where('plant_id', $plant) ->where('wire_packing_number', $pallet) ->value('customer_po_master_id'); $customer = CustomerPoMaster::find($masterBox); $customerCode = $customer->customer_po ?? ''; $customerName = $customer->customer_name ?? ''; $totalBoxes = WireMasterPacking::where('plant_id', $plant) ->where('customer_po_master_id', $customerId) ->distinct('wire_packing_number') ->count('wire_packing_number'); $completedPallets = WireMasterPacking::where('plant_id', $plant) ->where('customer_po_master_id', $customerId) ->select('wire_packing_number') ->groupBy('wire_packing_number') ->havingRaw( 'COUNT(*) = COUNT(CASE WHEN wire_packing_status = ? THEN 1 END)', ['Completed'] ) ->orderBy('wire_packing_number') ->pluck('wire_packing_number') ->values(); $index = $completedPallets->search($pallet); $currentPalletNo = ($index !== false) ? $index + 1 : 0; $boxLabel = $currentPalletNo . '/' . $totalBoxes; // $completedPallets = WireMasterPacking::where('plant_id', $plant) // ->select('wire_packing_number') // ->groupBy('wire_packing_number') // ->havingRaw('COUNT(*) = COUNT(CASE WHEN wire_packing_status = ? THEN 1 END)', ['Completed']) // ->orderBy('wire_packing_number') // ->pluck('wire_packing_number') // ->values(); // $currentPalletNo = $completedPallets->search($pallet) != false // ? $completedPallets->search($pallet) + 1 // : 0; // $boxLabel = $currentPalletNo . '/' . $totalBoxes; $grossWeight = $items->sum('weight'); $widthPt = 85 * 2.83465; // 85mm → points $heightPt = 100 * 2.83465; // 100mm → points $plantName = Plant::where('id', $plant)->value('name'); $plantAddress = Plant::where('id', $plant)->value('address'); $qrBase64 = $this->generateQrDataUri($pallet); $mpdf = new Mpdf([ 'format' => [85, 100], 'margin_left' => 0, 'margin_right' => 0, 'margin_top' => 0, 'margin_bottom' => 0, 'tempDir' => '/var/www/tmp/mpdf' ]); $html = view('pdf.wire-pallet', [ 'product' => 'Submersible Winding Wire', 'plantName' => $plantName, 'plantAddress' => $plantAddress, 'monthYear' => now()->format('M-y'), 'customerCode' => $customerCode, 'customerName' => $customerName, 'masterBox' => $pallet, 'items' => $items, 'grossWeight' => $grossWeight, 'netWeight' => $grossWeight - 3.05, 'pallet' => $pallet, 'qrBase64' => $qrBase64, ])->render(); $mpdf->WriteHTML($html); return $mpdf->Output("Pallet-{$pallet}.pdf", 'I'); // 'I' = inline view in browser } private function generateQrDataUri(string $data): string { $qr = new \Mpdf\QrCode\QrCode($data, 'H'); $output = new \Mpdf\QrCode\Output\Png(); $pngData = $output->output($qr, 80, [255, 255, 255], [0, 0, 0]); return 'data:image/png;base64,' . base64_encode($pngData); } public function store(Request $request) { // } /** * Display the specified resource. */ public function show(string $id) { // } /** * Update the specified resource in storage. */ public function update(Request $request, string $id) { // } /** * Remove the specified resource from storage. */ public function destroy(string $id) { // } }