diff --git a/app/Http/Controllers/PalletPrintController.php b/app/Http/Controllers/PalletPrintController.php index 9ce5e5c..66146a9 100644 --- a/app/Http/Controllers/PalletPrintController.php +++ b/app/Http/Controllers/PalletPrintController.php @@ -19,170 +19,30 @@ class PalletPrintController extends Controller // } - // public function print(Request $request, $pallet, $plant) - // { - - // $customerId = $request->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'); + // $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) @@ -205,6 +65,28 @@ class PalletPrintController extends Controller $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) @@ -252,43 +134,161 @@ class PalletPrintController extends Controller $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, + $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, - 'qrBase64' => $qrBase64, - ])->render(); + ])->setPaper([0, 0, $widthPt, $heightPt], 'portrait'); - $mpdf->WriteHTML($html); - return $mpdf->Output("Pallet-{$pallet}.pdf", 'I'); // 'I' = inline view in browser + 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); + // } } - 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); - } + /** + * 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) { diff --git a/resources/views/pdf/wire-pallet.blade.php b/resources/views/pdf/wire-pallet.blade.php index 9268f6e..144ab87 100644 --- a/resources/views/pdf/wire-pallet.blade.php +++ b/resources/views/pdf/wire-pallet.blade.php @@ -80,18 +80,18 @@ $compensatedLicenseHeight = $licenseHeight - 0.6; $compensatedCompanyHeight = $companyInfoHeight - 0.6; - // $qrBase64 = 'data:image/png;base64,' . base64_encode( - // QrCode::format('png') - // ->size(120) // 12mm ~ 120px - // ->margin(0) - // ->generate($pallet) + $qrBase64 = 'data:image/png;base64,' . base64_encode( + QrCode::format('png') + ->size(120) // 12mm ~ 120px + ->margin(0) + ->generate($pallet) // $qrBase64 = 'data:image/png;base64,' . base64_encode( // \SimpleSoftwareIO\QrCode\Facades\QrCode::format('png') // ->size(120) // ->margin(0) // ->errorCorrection('H') // ->generate($pallet) - // ); + ); @endphp