Some checks failed
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (push) Has been cancelled
Scan for leaked secrets using Kingfisher / kingfisher-secrets-scan (pull_request) Successful in 12s
Gemini PR Review / Gemini PR Review (pull_request) Failing after 18s
Laravel Pint / pint (pull_request) Successful in 2m42s
Laravel Larastan / larastan (pull_request) Failing after 3m48s
209 lines
6.5 KiB
PHP
209 lines
6.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\CustomerPoMaster;
|
|
use App\Models\Plant;
|
|
use App\Models\WireMasterPacking;
|
|
use Illuminate\Http\Request;
|
|
use Barryvdh\DomPDF\Facade\Pdf;
|
|
use Imagick;
|
|
|
|
class PalletPrintController extends Controller
|
|
{
|
|
/**
|
|
* Display a listing of the resource.
|
|
*/
|
|
public function index()
|
|
{
|
|
//
|
|
}
|
|
|
|
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 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)
|
|
{
|
|
//
|
|
}
|
|
}
|