ranjith-dev #397
@@ -5,9 +5,9 @@ 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 SimpleSoftwareIO\QrCode\Facades\QrCode;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
|
||||
|
||||
class PalletPrintController extends Controller
|
||||
@@ -20,9 +20,168 @@ 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');
|
||||
@@ -135,141 +294,34 @@ class PalletPrintController extends Controller
|
||||
|
||||
// $plantAddress = Plant::where('id', $plant)->value('address');
|
||||
|
||||
// $pdf = Pdf::loadView('pdf.wire-pallet', [
|
||||
|
||||
// // Generate PDF with mPDF
|
||||
// $mpdf = new Mpdf([
|
||||
// 'format' => [85, 100],
|
||||
// 'margin_left' => 0,
|
||||
// 'margin_right' => 0,
|
||||
// 'margin_top' => 0,
|
||||
// 'margin_bottom' => 0,
|
||||
// ]);
|
||||
|
||||
// $html = view('pdf.wire-pallet', [
|
||||
// 'product' => 'Submersible Winding Wire',
|
||||
// 'plantName' => $plantName,
|
||||
// 'plantAddress' => $plantAddress,
|
||||
// 'monthYear' => now()->format('M-y'),
|
||||
// 'branch' => '',
|
||||
// 'customerCode' => $customerCode,
|
||||
// 'customerName' => $customerName,
|
||||
// 'masterBox' => $boxLabel,
|
||||
// 'masterBox' => $pallet,
|
||||
// 'items' => $items,
|
||||
// 'grossWeight' => $grossWeight,
|
||||
// 'netWeight' => $grossWeight - 3.05,
|
||||
// 'pallet' => $pallet,
|
||||
// 'qrHtml' => '<barcode code="' . $pallet . '" type="QRCODE,H" class="barcode" />'
|
||||
// ])->setPaper([0, 0, $widthPt, $heightPt], 'portrait');
|
||||
// ])->render();
|
||||
|
||||
// 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);
|
||||
// // }
|
||||
// $mpdf->WriteHTML($html);
|
||||
// return $mpdf->Output("Pallet-{$pallet}.pdf", 'I'); // 'I' = inline view in browser
|
||||
// }
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*/
|
||||
|
||||
|
||||
public function print(Request $request, $pallet, $plant)
|
||||
{
|
||||
$customerId = $request->query('customer');
|
||||
|
||||
// Fetch items
|
||||
$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,
|
||||
'weight' => $row->weight,
|
||||
];
|
||||
});
|
||||
|
||||
// Fetch master box & customer info
|
||||
$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 ?? '';
|
||||
|
||||
// Calculate total boxes & current pallet number
|
||||
$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;
|
||||
|
||||
// Calculate gross weight
|
||||
$grossWeight = $items->sum('weight');
|
||||
|
||||
// Page dimensions in points for DomPDF
|
||||
$widthPt = 85 * 2.83465; // 85mm
|
||||
$heightPt = 100 * 2.83465; // 100mm
|
||||
|
||||
// Plant info
|
||||
$plantName = Plant::where('id', $plant)->value('name');
|
||||
$plantAddress = Plant::where('id', $plant)->value('address');
|
||||
|
||||
// Generate QR code using GD (no Imagick required)
|
||||
$qrBase64 = 'data:image/png;base64,' . base64_encode(
|
||||
QrCode::format('png')
|
||||
->size(120) // ~12mm
|
||||
->margin(0)
|
||||
->errorCorrection('H')
|
||||
->generate($pallet)
|
||||
);
|
||||
|
||||
// Load Blade view with data
|
||||
$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
|
||||
])->setPaper([0, 0, $widthPt, $heightPt], 'portrait');
|
||||
|
||||
return $pdf->stream("Pallet-{$pallet}.pdf");
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
//
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
// Total fixed space
|
||||
$fixedSpace = $titleHeight +
|
||||
(5 * $headerRowHeight) + // 6 header rows
|
||||
(5 * $headerRowHeight) +
|
||||
$itemHeaderHeight +
|
||||
$grossWeightHeight +
|
||||
$netWeightHeight +
|
||||
@@ -51,7 +51,7 @@
|
||||
|
||||
$itemRowHeight = floor(($spaceForItemsOnly / $numItems) * 10) / 10;
|
||||
|
||||
// $itemRowHeight -= 0.5;
|
||||
$itemRowHeight -= 0.5;
|
||||
if ($numItems == 1) {
|
||||
$itemRowHeight -= 0.5;
|
||||
}
|
||||
@@ -79,24 +79,26 @@
|
||||
$compensatedNetHeight = $netWeightHeight - 0.6;
|
||||
$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)
|
||||
// ->margin(0)
|
||||
// ->errorCorrection('H')
|
||||
// ->generate($pallet)
|
||||
// );
|
||||
$qrBase64 = 'data:image/png;base64,' . base64_encode(
|
||||
\SimpleSoftwareIO\QrCode\Facades\QrCode::format('png')
|
||||
->size(120)
|
||||
->margin(0)
|
||||
->errorCorrection('H')
|
||||
->generate($pallet)
|
||||
);
|
||||
@endphp
|
||||
|
||||
<style>
|
||||
@page {
|
||||
size: 85mm 100mm;
|
||||
margin: 0;
|
||||
/* margin: 0; */
|
||||
margin: 0.5mm;
|
||||
}
|
||||
|
||||
* {
|
||||
|
||||
Reference in New Issue
Block a user