diff --git a/app/Http/Controllers/ProductionOrderController.php b/app/Http/Controllers/ProductionOrderController.php new file mode 100644 index 0000000..699184c --- /dev/null +++ b/app/Http/Controllers/ProductionOrderController.php @@ -0,0 +1,92 @@ +first(); + + if (!$order) { + abort(404, 'Production Order not found'); + } + else{ + $fromSerial = (int) $order->from_serial_number; + $toSerial = (int) $order->to_serial_number; + $itemCode = $order->item->code ?? ''; + $itemDes = $order->item->description ?? ''; + + $stickers = []; + + for ($i = $fromSerial; $i <= $toSerial; $i++) + { + + $serial = str_pad($i, 6, '0', STR_PAD_LEFT); + + $qrData = $itemCode . '|' . $serial; + + $qrBase64 = base64_encode( + QrCode::format('png')->size(100)->generate($qrData) + ); + + $stickers[] = [ + 'serial' => $serial, + 'qr' => 'data:image/png;base64,' . $qrBase64, + 'production_order' => $production_order, + 'description' => $itemDes ?? '' + ]; + } + + $pdf = Pdf::loadView('production-orders.print', compact('stickers')) + ->setPaper([0, 0, 170, 40]); + + return $pdf->stream('stickers.pdf'); + } + } + + /** + * 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) + { + // + } +} diff --git a/resources/views/forms/components/save-production-order-button.php b/resources/views/forms/components/save-production-order-button.php new file mode 100644 index 0000000..2fe9553 --- /dev/null +++ b/resources/views/forms/components/save-production-order-button.php @@ -0,0 +1,16 @@ + + + + diff --git a/resources/views/production-orders/print.blade.php b/resources/views/production-orders/print.blade.php new file mode 100644 index 0000000..f2b068a --- /dev/null +++ b/resources/views/production-orders/print.blade.php @@ -0,0 +1,105 @@ + + + + + + + +@foreach($stickers as $sticker) +
+ + + + + +
+ + +
{{ $sticker['serial'] }}
+
{{ $sticker['production_order'] }}
+
{{ $sticker['description'] }}
+
+
+@endforeach + + + diff --git a/routes/web.php b/routes/web.php index fba8a81..97e0ae8 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,6 +1,7 @@ name('approval.approve.success'); +Route::get('/production-orders/print/{production_order}', + [ProductionOrderController::class, 'print'] +)->name('production-orders.print'); + // Route::get('/characteristic/approve', [CharacteristicApprovalController::class, 'approve']) // ->name('characteristic.approve') // ->middleware('signed'); @@ -67,6 +72,7 @@ Route::get('/approval/approve-success', function () { // ->middleware('signed'); // routes/web.php + Route::post('/save-serials-to-session', function (Request $request) { session(['serial_numbers' => $request->serial_numbers]); @@ -86,6 +92,16 @@ Route::get('/part-validation-image/{filename}', function ($filename) { return response()->file($path); })->name('part.validation.image'); +Route::get('/workflow-image/{filename}', function ($filename) { + $path = storage_path("app/private/uploads/LaserDocs/{$filename}"); + + if (! file_exists($path)) { + abort(404, 'Image not found'); + } + + return response()->file($path); +})->name('workflow.image'); + // web.php Route::post('/temp-upload', function (Request $request) { if (! $request->hasFile('photo')) {