diff --git a/app/Http/Controllers/PalletPrintController.php b/app/Http/Controllers/PalletPrintController.php new file mode 100644 index 0000000..f791fbd --- /dev/null +++ b/app/Http/Controllers/PalletPrintController.php @@ -0,0 +1,208 @@ +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 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) + { + // + } +}