Compare commits
1 Commits
bfdaef7cec
...
renovate/c
| Author | SHA1 | Date | |
|---|---|---|---|
| 090bcff02a |
@@ -36,18 +36,12 @@ class ImportTransitExporter extends Exporter
|
|||||||
->label('SHIPPER INVOICE'),
|
->label('SHIPPER INVOICE'),
|
||||||
ExportColumn::make('shipper_invoice_date')
|
ExportColumn::make('shipper_invoice_date')
|
||||||
->label('SHIPPER INVOICE DATE'),
|
->label('SHIPPER INVOICE DATE'),
|
||||||
ExportColumn::make('inv_value')
|
|
||||||
->label('Inv Value'),
|
|
||||||
ExportColumn::make('freight_charge')
|
|
||||||
->label('Freight Charge'),
|
|
||||||
ExportColumn::make('customs_agent_name')
|
ExportColumn::make('customs_agent_name')
|
||||||
->label('CUSTOMS AGENT NAME'),
|
->label('CUSTOMS AGENT NAME'),
|
||||||
ExportColumn::make('eta_date')
|
ExportColumn::make('eta_date')
|
||||||
->label('ETA DATE'),
|
->label('ETA DATE'),
|
||||||
ExportColumn::make('status')
|
ExportColumn::make('status')
|
||||||
->label('STATUS'),
|
->label('STATUS'),
|
||||||
ExportColumn::make('insurance_status')
|
|
||||||
->label('Insurance Status'),
|
|
||||||
ExportColumn::make('delivery_location')
|
ExportColumn::make('delivery_location')
|
||||||
->label('DELIVERY LOCATION'),
|
->label('DELIVERY LOCATION'),
|
||||||
ExportColumn::make('etd_date')
|
ExportColumn::make('etd_date')
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ class ImportTransitImporter extends Importer
|
|||||||
->label('Status'),
|
->label('Status'),
|
||||||
ImportColumn::make('insurance_status')
|
ImportColumn::make('insurance_status')
|
||||||
->exampleHeader('Insurance Status')
|
->exampleHeader('Insurance Status')
|
||||||
->example('Yes')
|
->example('Receipted')
|
||||||
->label('Insurance Status'),
|
->label('Insurance Status'),
|
||||||
ImportColumn::make('delivery_location')
|
ImportColumn::make('delivery_location')
|
||||||
->exampleHeader('Delivery Location')
|
->exampleHeader('Delivery Location')
|
||||||
@@ -176,7 +176,6 @@ class ImportTransitImporter extends Importer
|
|||||||
|
|
||||||
return ImportTransit::updateOrCreate([
|
return ImportTransit::updateOrCreate([
|
||||||
'cri_rfq_number' => $criRfqNumber,
|
'cri_rfq_number' => $criRfqNumber,
|
||||||
'shipper_invoice' => $shipperInvoice,
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'mail_received_date' => $this->formatDate($mailRecDate),
|
'mail_received_date' => $this->formatDate($mailRecDate),
|
||||||
@@ -188,6 +187,7 @@ class ImportTransitImporter extends Importer
|
|||||||
'requester' => $requester,
|
'requester' => $requester,
|
||||||
'shipper' => $shipper,
|
'shipper' => $shipper,
|
||||||
'shipper_location' => $shipperLocation,
|
'shipper_location' => $shipperLocation,
|
||||||
|
'shipper_invoice' => $shipperInvoice,
|
||||||
'inv_value' => $invValue,
|
'inv_value' => $invValue,
|
||||||
'freight_charge' => $freightCharge,
|
'freight_charge' => $freightCharge,
|
||||||
'custom_agent_name' => $customsAgentname,
|
'custom_agent_name' => $customsAgentname,
|
||||||
|
|||||||
@@ -54,17 +54,6 @@ class GateOutEntry extends Page implements HasForms
|
|||||||
$entry = VisitorEntry::where('register_id', $gatePass)->first();
|
$entry = VisitorEntry::where('register_id', $gatePass)->first();
|
||||||
|
|
||||||
if ($entry) {
|
if ($entry) {
|
||||||
|
|
||||||
if (!empty($entry->out_time)) {
|
|
||||||
Notification::make()
|
|
||||||
->title('Already Exited')
|
|
||||||
->body('Gate pass has already been processed. Out time was already punched.')
|
|
||||||
->warning()
|
|
||||||
->send();
|
|
||||||
$this->filters['scan_out_gate_pass'] = '';
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$entry->out_time = now();
|
$entry->out_time = now();
|
||||||
$entry->save();
|
$entry->save();
|
||||||
|
|
||||||
@@ -74,7 +63,6 @@ class GateOutEntry extends Page implements HasForms
|
|||||||
->success()
|
->success()
|
||||||
->send();
|
->send();
|
||||||
$this->filters['scan_out_gate_pass'] = '';
|
$this->filters['scan_out_gate_pass'] = '';
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
Notification::make()
|
Notification::make()
|
||||||
->title('Invalid Gate Pass')
|
->title('Invalid Gate Pass')
|
||||||
|
|||||||
@@ -3507,17 +3507,6 @@ class QualityValidationResource extends Resource
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (strpos($state, '|') !== false) {
|
|
||||||
$state = explode('|', $state)[0];
|
|
||||||
if ($state != $expectedValue){
|
|
||||||
$set('part_validation1_error', 'Invalid input for part validation 1.');
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
$set('part_validation1', $state);
|
|
||||||
$set('part_validation1_error', null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ($state == $expectedValue) {
|
if ($state == $expectedValue) {
|
||||||
$set('part_validation1_error', null);
|
$set('part_validation1_error', null);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -244,26 +244,16 @@ class VisitorEntryResource extends Resource
|
|||||||
->alignCenter()
|
->alignCenter()
|
||||||
->searchable()
|
->searchable()
|
||||||
->sortable(),
|
->sortable(),
|
||||||
Tables\Columns\TextColumn::make('mobile_number')
|
|
||||||
->label('Visitor Mobile Number')
|
|
||||||
->alignCenter()
|
|
||||||
->searchable()
|
|
||||||
->searchable()
|
|
||||||
->sortable(),
|
|
||||||
Tables\Columns\TextColumn::make('name')
|
Tables\Columns\TextColumn::make('name')
|
||||||
->label('Visitor Name')
|
->label('Visitor Name')
|
||||||
->sortable()
|
->sortable()
|
||||||
->alignCenter()
|
->alignCenter()
|
||||||
->searchable(),
|
->searchable(),
|
||||||
Tables\Columns\TextColumn::make('company')
|
Tables\Columns\TextColumn::make('mobile_number')
|
||||||
->label('Visitor Company')
|
->label('Visitor Mobile Number')
|
||||||
->sortable()
|
|
||||||
->alignCenter()
|
|
||||||
->searchable(),
|
|
||||||
Tables\Columns\TextColumn::make('employeeMaster.plant.name')
|
|
||||||
->label('Visited Plant')
|
|
||||||
->alignCenter()
|
->alignCenter()
|
||||||
->searchable()
|
->searchable()
|
||||||
|
->searchable()
|
||||||
->sortable(),
|
->sortable(),
|
||||||
Tables\Columns\TextColumn::make('employeeMaster.name')
|
Tables\Columns\TextColumn::make('employeeMaster.name')
|
||||||
->label('Recipient Name')
|
->label('Recipient Name')
|
||||||
@@ -285,11 +275,6 @@ class VisitorEntryResource extends Resource
|
|||||||
->searchable()
|
->searchable()
|
||||||
->alignCenter()
|
->alignCenter()
|
||||||
->sortable(),
|
->sortable(),
|
||||||
Tables\Columns\TextColumn::make('purpose_of_visit')
|
|
||||||
->label('Purpose of Visit')
|
|
||||||
->searchable()
|
|
||||||
->alignCenter()
|
|
||||||
->sortable(),
|
|
||||||
Tables\Columns\TextColumn::make('in_time')
|
Tables\Columns\TextColumn::make('in_time')
|
||||||
->label('In Time')
|
->label('In Time')
|
||||||
->searchable()
|
->searchable()
|
||||||
@@ -636,5 +621,4 @@ class VisitorEntryResource extends Resource
|
|||||||
SoftDeletingScope::class,
|
SoftDeletingScope::class,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
"autoprefixer": "^10.4.20",
|
"autoprefixer": "^10.4.20",
|
||||||
"axios": "^1.7.4",
|
"axios": "^1.7.4",
|
||||||
"chartjs-plugin-datalabels": "^2.2.0",
|
"chartjs-plugin-datalabels": "^2.2.0",
|
||||||
"concurrently": "^9.0.1",
|
"concurrently": "^10.0.0",
|
||||||
"laravel-vite-plugin": "^1.2.0",
|
"laravel-vite-plugin": "^1.2.0",
|
||||||
"postcss": "^8.4.47",
|
"postcss": "^8.4.47",
|
||||||
"tailwindcss": "^3.4.13",
|
"tailwindcss": "^3.4.13",
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
|
||||||
<style>
|
<style>
|
||||||
@page {
|
@page {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
|
||||||
<style>
|
<style>
|
||||||
@page {
|
@page {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
|
||||||
<style>
|
<style>
|
||||||
@page {
|
@page {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|||||||
@@ -41,26 +41,32 @@
|
|||||||
.badge-header {
|
.badge-header {
|
||||||
background: #1a1a2e;
|
background: #1a1a2e;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
padding: 1.5mm 2mm;
|
text-align: center;
|
||||||
|
padding: 2mm 2mm 1.5mm;
|
||||||
font-size: 8pt;
|
font-size: 8pt;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
letter-spacing: 1px;
|
letter-spacing: 1px;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
flex-shrink: 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.badge-header .type { font-size: 9pt; letter-spacing: 2px; }
|
.badge-header .type {
|
||||||
.badge-header .badge-id { font-size: 7pt; opacity: 0.85; }
|
font-size: 9pt;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.badge-header .badge-id {
|
||||||
|
font-size: 7pt;
|
||||||
|
opacity: 0.85;
|
||||||
|
}
|
||||||
|
|
||||||
/* ── Body ── */
|
/* ── Body ── */
|
||||||
.badge-body {
|
.badge-body {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
padding: 1.5mm 2mm;
|
padding: 2mm;
|
||||||
gap: 2mm;
|
gap: 2mm;
|
||||||
overflow: hidden;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── Fields (left) ── */
|
/* ── Fields (left) ── */
|
||||||
@@ -68,104 +74,82 @@
|
|||||||
flex: 1;
|
flex: 1;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
overflow: hidden;
|
gap: 1.2mm;
|
||||||
}
|
}
|
||||||
|
|
||||||
.field-row {
|
.field-row {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 16mm 3mm 1fr;
|
grid-template-columns: 16mm 3mm 1fr;
|
||||||
line-height: 1.25;
|
line-height: 1.3;
|
||||||
margin-bottom: 0.6mm;
|
margin-bottom: 0.7mm;
|
||||||
align-items: start;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.field-label {
|
.field-label {
|
||||||
color: #000;
|
color: #000; /* was #555 — now pure black */
|
||||||
font-size: 6.5pt;
|
font-size: 6.5pt;
|
||||||
font-weight: 700;
|
font-weight: 700; /* was normal — now bold */
|
||||||
white-space: nowrap;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.field-colon {
|
.field-colon {
|
||||||
color: #000;
|
color: #000; /* was #555 — now pure black */
|
||||||
font-size: 6.5pt;
|
font-size: 6.5pt;
|
||||||
font-weight: 700;
|
font-weight: 700; /* added bold */
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.field-value {
|
.field-value {
|
||||||
font-weight: 700;
|
font-weight: 700; /* was 600 — now fully bold */
|
||||||
font-size: 6.5pt;
|
font-size: 6.5pt;
|
||||||
color: #000;
|
color: #000; /* was #111 — now pure black */
|
||||||
/* Prevent wrapping — truncate with ellipsis if too long */
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── Photo column (right) ── */
|
/* ── Photo (right) ── */
|
||||||
.badge-photo {
|
.badge-photo {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
gap: 1mm;
|
||||||
width: 18mm;
|
width: 18mm;
|
||||||
flex-shrink: 0;
|
|
||||||
gap: 0.5mm;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.badge-photo img {
|
.badge-photo img {
|
||||||
width: 16mm;
|
width: 16mm;
|
||||||
height: 16mm;
|
height: 18mm;
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
border: 1px solid #000;
|
border: 1px solid #ccc;
|
||||||
}
|
}
|
||||||
|
|
||||||
.badge-photo .no-photo {
|
.badge-photo .no-photo {
|
||||||
width: 16mm;
|
width: 16mm;
|
||||||
height: 16mm;
|
height: 18mm;
|
||||||
border: 1.5px dashed #000;
|
border: 1.5px dashed #000; /* was #aaa — darker border */
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
font-size: 6pt;
|
font-size: 6pt; /* slightly larger */
|
||||||
color: #000;
|
color: #000; /* was #aaa */
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.host-sign {
|
.host-sign {
|
||||||
font-size: 6pt;
|
font-size: 6pt; /* was 5.5pt — slightly larger */
|
||||||
color: #000;
|
color: #000; /* was #555 — now pure black */
|
||||||
font-weight: 700;
|
font-weight: 700; /* added bold */
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border-top: 1px solid #000;
|
border-top: 1px solid #000; /* was 0.5px #aaa — darker line */
|
||||||
padding-top: 0.5mm;
|
padding-top: 0.5mm;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ── QR code ── */
|
|
||||||
.visitor-qr {
|
|
||||||
margin-top: 1mm;
|
|
||||||
width: 18mm;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.visitor-qr svg {
|
|
||||||
width: 16mm !important;
|
|
||||||
height: 16mm !important;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ── Footer ── */
|
/* ── Footer ── */
|
||||||
.badge-footer {
|
.badge-footer {
|
||||||
border-top: 1px solid #000;
|
border-top: 1px solid #000; /* was 0.5px #ddd — darker line */
|
||||||
padding: 0.8mm 2mm;
|
padding: 1mm 2mm;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
font-size: 6pt;
|
font-size: 6pt; /* was 5.5pt — slightly larger */
|
||||||
color: #000;
|
color: #000; /* was #888 — now pure black */
|
||||||
font-weight: 700;
|
font-weight: 700; /* added bold */
|
||||||
flex-shrink: 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media print {
|
@media print {
|
||||||
@@ -174,9 +158,9 @@
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body onload="window.print()">
|
||||||
|
|
||||||
{{-- ── Print / Close buttons (screen only) ── --}}
|
{{-- ── Print button (visible on screen only, hidden when printing) ── --}}
|
||||||
<div class="no-print" style="padding: 8px; text-align:center; background:#f3f4f6;">
|
<div class="no-print" style="padding: 8px; text-align:center; background:#f3f4f6;">
|
||||||
<button onclick="window.print()" style="padding:6px 18px; background:#1a1a2e; color:#fff; border:none; border-radius:6px; cursor:pointer; font-size:13px;">
|
<button onclick="window.print()" style="padding:6px 18px; background:#1a1a2e; color:#fff; border:none; border-radius:6px; cursor:pointer; font-size:13px;">
|
||||||
🖨️ Print Badge
|
🖨️ Print Badge
|
||||||
@@ -191,7 +175,7 @@
|
|||||||
{{-- Header --}}
|
{{-- Header --}}
|
||||||
<div class="badge-header">
|
<div class="badge-header">
|
||||||
<span class="type">{{ strtoupper($visitor->type ?? 'VISITOR') }}</span>
|
<span class="type">{{ strtoupper($visitor->type ?? 'VISITOR') }}</span>
|
||||||
<span class="badge-id">#{{ $visitor->register_id ?? str_pad($visitor->id, 5, '0', STR_PAD_LEFT) }}</span>
|
<span class="badge-id">#{{ str_pad($visitor->register_id, 5, '0', STR_PAD_LEFT) }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{-- Body --}}
|
{{-- Body --}}
|
||||||
@@ -236,26 +220,25 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{-- Right: photo + host sign + QR --}}
|
{{-- Right: photo + host sign --}}
|
||||||
<div class="badge-photo">
|
<div class="badge-photo">
|
||||||
@if($photoUrl)
|
@if($photoUrl)
|
||||||
<img src="{{ $photoUrl }}" alt="Visitor Photo" />
|
<img src="{{ $photoUrl }}" alt="Visitor Photo" />
|
||||||
@else
|
@else
|
||||||
<div class="no-photo">No Photo</div>
|
<div class="no-photo">No Photo</div>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
<div class="host-sign">Host Sign</div>
|
<div class="host-sign">Host Sign</div>
|
||||||
|
<div class="visitor-qr" style="margin-top:2mm;">
|
||||||
{{-- QR Code — high res, with quiet zone and high error correction --}}
|
{{-- {!! QrCode::size(25)
|
||||||
|
->margin(0)
|
||||||
|
->generate($visitor->register_id) !!} --}}
|
||||||
@if(!empty($visitor->register_id))
|
@if(!empty($visitor->register_id))
|
||||||
<div class="visitor-qr">
|
{!! QrCode::size(35)
|
||||||
{!! QrCode::size(300)
|
->margin(0)
|
||||||
->margin(2)
|
|
||||||
->errorCorrection('H')
|
|
||||||
->generate((string) $visitor->register_id) !!}
|
->generate((string) $visitor->register_id) !!}
|
||||||
</div>
|
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -264,11 +247,5 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
|
||||||
window.addEventListener('load', function () {
|
|
||||||
setTimeout(function () { window.print(); }, 300);
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user