Initial commit

This commit is contained in:
Porawit Dongwang
2026-09-16 23:20:08 +07:00
commit 0041668dbb
32577 changed files with 3687927 additions and 0 deletions
@@ -0,0 +1,221 @@
<?php require_once APP_ROOT . '/app/Views/layouts/header.php'; ?>
<div class="mb-6 flex justify-between items-start md:items-center flex-col md:flex-row gap-4">
<div>
<h2 class="text-2xl font-bold text-slate-800 dark:text-white">ระบบสืบค้นและพิมพ์สลิปเงินเดือน / 50 ทวิ</h2>
<p class="text-slate-500 dark:text-slate-400 text-sm mt-1">ค้นหารายการจ่ายเงินเดือนเพื่อสั่งพิมพ์สลิปเงินเดือน (รายเดือน) หรือใบเสียภาษี (50 ทวิ - รายปี)</p>
</div>
<div class="flex flex-col items-end gap-2">
<label class="inline-flex items-center cursor-pointer mb-2">
<input type="checkbox" id="togglePrefix" class="w-4 h-4 text-indigo-600 bg-slate-100 border-slate-300 rounded focus:ring-indigo-500 dark:focus:ring-indigo-600 dark:ring-offset-slate-800 focus:ring-2 dark:bg-slate-700 dark:border-slate-600">
<span class="ml-2 text-sm font-medium text-slate-700 dark:text-slate-300">แสดงคำนำหน้าชื่อ</span>
</label>
<label class="inline-flex items-center cursor-pointer">
<input type="checkbox" id="groupByLetter" class="w-4 h-4 text-indigo-600 bg-slate-100 border-slate-300 rounded focus:ring-indigo-500 dark:focus:ring-indigo-600 dark:ring-offset-slate-800 focus:ring-2 dark:bg-slate-700 dark:border-slate-600">
<span class="ml-2 text-sm font-medium text-slate-700 dark:text-slate-300">จัดกลุ่มตามตัวอักษร (มีใบปะหน้า)</span>
</label>
<div>
<form id="bulkTaxForm" action="<?= BASE_URL ?>/reports/taxBulk" method="POST" target="_blank" class="hidden">
<input type="hidden" name="year" value="<?= htmlspecialchars($year ?? date('Y')) ?>">
<input type="hidden" name="group_by_letter" id="formGroupByLetter" value="0">
<div id="bulkTaxFormContainer"></div>
</form>
<button type="button" id="bulkPrintBtn" class="inline-flex items-center justify-center px-4 py-2.5 bg-indigo-600 hover:bg-indigo-700 text-white text-sm font-medium rounded-xl transition-colors shadow-sm">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-5 h-5 mr-2"><path stroke-linecap="round" stroke-linejoin="round" d="M6.72 13.829c-.24.03-.48.062-.72.096m.72-.096a42.415 42.415 0 0 1 10.56 0m-10.56 0L6.34 18m10.94-4.171c.24.03.48.062.72.096m-.72-.096L17.66 18m0 0 .229 2.523a1.125 1.125 0 0 1-1.12 1.227H7.231c-.662 0-1.18-.568-1.12-1.227L6.34 18m11.318 0h1.091A2.25 2.25 0 0 0 21 15.75V9.456c0-1.081-.768-2.015-1.837-2.175a48.055 48.055 0 0 0-1.913-.247M6.34 18H5.25A2.25 2.25 0 0 1 3 15.75V9.456c0-1.081.768-2.015 1.837-2.175a48.041 48.041 0 0 1 1.913-.247m10.5 0a48.536 48.536 0 0 0-10.5 0m10.5 0V3.375c0-.621-.504-1.125-1.125-1.125h-8.25c-.621 0-1.125.504-1.125 1.125v3.659M18 10.5h.008v.008H18V10.5Zm-3 0h.008v.008H15V10.5Z" /></svg>
พิมพ์ 50 ทวิ ที่เลือก (Bulk Print)
</button>
</div>
</div>
</div>
<!-- Filter Section -->
<div class="bg-white dark:bg-slate-800 rounded-2xl shadow-sm border border-slate-100 dark:border-slate-700 p-6 mb-6">
<form action="<?= BASE_URL ?>/reports" method="GET" class="flex flex-col md:flex-row gap-4 items-end">
<div class="w-full md:w-1/3">
<label class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">เลือกปี (พ.ศ.)</label>
<select name="year" class="block w-full rounded-xl border-0 py-2.5 px-3 text-slate-900 dark:text-white shadow-sm ring-1 ring-inset ring-slate-300 dark:ring-slate-600 focus:ring-2 focus:ring-sky-500 bg-slate-50 dark:bg-slate-900 sm:text-sm">
<?php
$currentYear = date('Y');
for($y = $currentYear + 1; $y >= $currentYear - 5; $y--):
$thaiYear = $y + 543;
?>
<option value="<?= $y ?>" <?= (isset($year) && $year == $y) ? 'selected' : '' ?>><?= $thaiYear ?></option>
<?php endfor; ?>
</select>
</div>
<div class="w-full md:w-1/3">
<label class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">เลือกเดือน</label>
<select name="month" class="block w-full rounded-xl border-0 py-2.5 px-3 text-slate-900 dark:text-white shadow-sm ring-1 ring-inset ring-slate-300 dark:ring-slate-600 focus:ring-2 focus:ring-sky-500 bg-slate-50 dark:bg-slate-900 sm:text-sm">
<?php
$thaiMonths = [
'01' => 'มกราคม', '02' => 'กุมภาพันธ์', '03' => 'มีนาคม', '04' => 'เมษายน',
'05' => 'พฤษภาคม', '06' => 'มิถุนายน', '07' => 'กรกฎาคม', '08' => 'สิงหาคม',
'09' => 'กันยายน', '10' => 'ตุลาคม', '11' => 'พฤศจิกายน', '12' => 'ธันวาคม'
];
foreach($thaiMonths as $mNum => $mName):
?>
<option value="<?= $mNum ?>" <?= (isset($month) && $month == $mNum) ? 'selected' : '' ?>><?= $mName ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="w-full md:w-1/3">
<button type="submit" class="w-full inline-flex items-center justify-center px-4 py-2.5 bg-sky-500 hover:bg-sky-600 text-white text-sm font-medium rounded-xl transition-colors shadow-sm">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-4 h-4 mr-2"><path stroke-linecap="round" stroke-linejoin="round" d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z" /></svg>
ค้นหา
</button>
</div>
</form>
</div>
<!-- Results DataTables -->
<link rel="stylesheet" href="https://cdn.datatables.net/2.0.8/css/dataTables.tailwindcss.css">
<style>
/* DataTables Dark Mode Overrides */
.dark .dt-container { color: #cbd5e1; }
.dark .dt-length select, .dark .dt-search input { background-color: #1e293b; border-color: #334155; color: #f8fafc; border-radius: 0.5rem; padding: 0.25rem 0.5rem; }
.dark .dt-info, .dark .dt-paging-button { color: #94a3b8 !important; }
.dark .dt-paging-button.current { background: #38bdf8 !important; color: #0f172a !important; border-color: #38bdf8 !important; }
.dark .dt-paging-button:hover { background: #334155 !important; color: #f8fafc !important; }
table.dataTable.no-footer { border-bottom: 1px solid #334155 !important; }
</style>
<div class="bg-white dark:bg-slate-800 rounded-2xl shadow-sm border border-slate-100 dark:border-slate-700 overflow-hidden p-6">
<div class="overflow-x-hidden">
<table id="reportTable" class="w-full text-left text-sm text-slate-600 dark:text-slate-300 display">
<thead class="bg-slate-50 dark:bg-slate-900/50 text-slate-500 dark:text-slate-400 text-xs uppercase font-semibold">
<tr>
<th class="px-4 py-4 w-10 text-center">
<input type="checkbox" id="selectAllCheckbox" class="w-4 h-4 text-sky-600 bg-slate-100 border-slate-300 rounded focus:ring-sky-500 dark:focus:ring-sky-600 dark:ring-offset-slate-800 focus:ring-2 dark:bg-slate-700 dark:border-slate-600 cursor-pointer">
</th>
<th class="px-4 py-4">รูป</th>
<th class="px-6 py-4">ชื่อ-สกุล</th>
<th class="px-6 py-4">ตำแหน่ง/หน่วยงาน</th>
<th class="px-6 py-4 text-center">พิมพ์สลิป (รายเดือน)</th>
<th class="px-6 py-4 text-center">พิมพ์ 50 ทวิ (รายปี)</th>
</tr>
</thead>
<tbody class="divide-y divide-slate-100 dark:divide-slate-700">
<?php foreach ($payrollData as $row): ?>
<tr class="hover:bg-slate-50 dark:hover:bg-slate-700/50 transition-colors">
<td class="px-4 py-4 text-center">
<input type="checkbox" value="<?= htmlspecialchars($row['national_id']) ?>" class="tax-checkbox w-4 h-4 text-sky-600 bg-slate-100 border-slate-300 rounded focus:ring-sky-500 dark:focus:ring-sky-600 dark:ring-offset-slate-800 focus:ring-2 dark:bg-slate-700 dark:border-slate-600 cursor-pointer">
</td>
<td class="px-4 py-4">
<div class="w-10 h-10 rounded-full overflow-hidden bg-slate-200 dark:bg-slate-700 border-2 border-white dark:border-slate-600 shadow-sm flex items-center justify-center">
<img src="<?= BASE_URL ?>/employee/image/<?= urlencode($row['national_id']) ?>" alt="Profile" class="w-full h-full object-cover" onerror="this.style.display='none'">
</div>
</td>
<?php
$rawName = trim($row['hr_fname'] ?? $row['first_name']);
$prefix = '';
$bodyName = $rawName;
if (preg_match('/^(นาย|นางสาว|นาง|ว่าที่ร้อยตรี|น\.ส\.|นพ\.|พญ\.|ดร\.)\s*(.*)$/u', $rawName, $matches)) {
$prefix = $matches[1];
$bodyName = $matches[2];
}
?>
<td class="px-6 py-4 font-medium text-slate-800 dark:text-slate-200" data-sort="<?= htmlspecialchars($bodyName) ?>">
<span class="name-prefix hidden"><?= htmlspecialchars($prefix) ?></span><?= htmlspecialchars($bodyName) ?> <?= htmlspecialchars($row['hr_lname'] ?? $row['last_name']) ?>
</td>
<td class="px-6 py-4">
<div class="text-slate-800 dark:text-slate-200"><?= htmlspecialchars($row['hr_position'] ?? 'N/A') ?></div>
<div class="text-xs text-slate-500 dark:text-slate-400"><?= htmlspecialchars($row['hr_department'] ?? 'N/A') ?></div>
</td>
<td class="px-6 py-4 text-center">
<a href="<?= BASE_URL ?>/reports/slip/<?= urlencode($row['national_id']) ?>/<?= $month ?>/<?= $year ?>" target="_blank" class="inline-flex items-center px-3 py-1.5 bg-emerald-50 text-emerald-600 dark:bg-emerald-900/30 dark:text-emerald-400 border border-emerald-200 dark:border-emerald-800 rounded-lg text-xs font-medium hover:bg-emerald-100 dark:hover:bg-emerald-900/50 transition-colors">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-4 h-4 mr-1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M6.72 13.829c-.24.03-.48.062-.72.096m.72-.096a42.415 42.415 0 0 1 10.56 0m-10.56 0L6.34 18m10.94-4.171c.24.03.48.062.72.096m-.72-.096L17.66 18m0 0 .229 2.523a1.125 1.125 0 0 1-1.12 1.227H7.231c-.662 0-1.18-.568-1.12-1.227L6.34 18m11.318 0h1.091A2.25 2.25 0 0 0 21 15.75V9.456c0-1.081-.768-2.015-1.837-2.175a48.055 48.055 0 0 0-1.913-.247M6.34 18H5.25A2.25 2.25 0 0 1 3 15.75V9.456c0-1.081.768-2.015 1.837-2.175a48.041 48.041 0 0 1 1.913-.247m10.5 0a48.536 48.536 0 0 0-10.5 0m10.5 0V3.375c0-.621-.504-1.125-1.125-1.125h-8.25c-.621 0-1.125.504-1.125 1.125v3.659M18 10.5h.008v.008H18V10.5Zm-3 0h.008v.008H15V10.5Z" /></svg>
สลิปเดือนนี้
</a>
</td>
<td class="px-6 py-4 text-center">
<a href="<?= BASE_URL ?>/reports/tax/<?= urlencode($row['national_id']) ?>/<?= $year ?>" target="_blank" class="inline-flex items-center px-3 py-1.5 bg-indigo-50 text-indigo-600 dark:bg-indigo-900/30 dark:text-indigo-400 border border-indigo-200 dark:border-indigo-800 rounded-lg text-xs font-medium hover:bg-indigo-100 dark:hover:bg-indigo-900/50 transition-colors">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-4 h-4 mr-1.5"><path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z" /></svg>
50 ทวิ (ทั้งปี)
</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
<!-- jQuery and DataTables JS -->
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script src="https://cdn.datatables.net/2.0.8/js/dataTables.js"></script>
<script src="https://cdn.datatables.net/2.0.8/js/dataTables.tailwindcss.js"></script>
<script>
$(document).ready(function() {
$('#reportTable').DataTable({
"language": {
"sProcessing": "กำลังดำเนินการ...",
"sLengthMenu": "แสดง _MENU_ เรคคอร์ด",
"sZeroRecords": "ไม่พบข้อมูล",
"sInfo": "แสดง _START_ ถึง _END_ จาก _TOTAL_ เรคคอร์ด",
"sInfoEmpty": "แสดง 0 ถึง 0 จาก 0 เรคคอร์ด",
"sInfoFiltered": "(กรองข้อมูล _MAX_ ทุกเรคคอร์ด)",
"sSearch": "ค้นหา:",
"oPaginate": {
"sFirst": "แรกสุด",
"sPrevious": "ก่อนหน้า",
"sNext": "ถัดไป",
"sLast": "สุดท้าย"
}
},
"pageLength": 50,
"columnDefs": [
{ "orderable": false, "targets": [0, 1, 4, 5] } // Disable sorting on Checkbox, Image, and Print Action columns
]
});
// Checkbox toggle prefix
$('#togglePrefix').on('change', function() {
if ($(this).is(':checked')) {
$('.name-prefix').removeClass('hidden');
} else {
$('.name-prefix').addClass('hidden');
}
});
// Handle Select All Checkbox
$('#selectAllCheckbox').on('click', function() {
var isChecked = this.checked;
// Get all rows in DataTables (including those on other pages)
var tableNodes = $('#reportTable').DataTable().rows().nodes();
$('input.tax-checkbox', tableNodes).prop('checked', isChecked);
});
// Handle Bulk Print Button
$('#bulkPrintBtn').on('click', function(e) {
e.preventDefault();
var table = $('#reportTable').DataTable();
var checkedBoxes = table.$('input.tax-checkbox:checked');
if (checkedBoxes.length === 0) {
alert('กรุณาเลือกรายชื่ออย่างน้อย 1 รายการเพื่อพิมพ์');
return;
}
// Set group_by_letter value
$('#formGroupByLetter').val($('#groupByLetter').is(':checked') ? '1' : '0');
// Clear old hidden inputs in form
$('#bulkTaxFormContainer').empty();
// Create hidden inputs for each selected ID
checkedBoxes.each(function() {
$('#bulkTaxFormContainer').append($('<input>').attr({
type: 'hidden',
name: 'national_ids[]',
value: $(this).val()
}));
});
$('#bulkTaxForm').submit();
});
});
</script>
<?php require_once APP_ROOT . '/app/Views/layouts/footer.php'; ?>
@@ -0,0 +1,145 @@
<?php require_once APP_ROOT . '/app/Views/layouts/header.php'; ?>
<div class="flex flex-col md:flex-row md:items-center md:justify-between mb-6 gap-4">
<div>
<h2 class="text-2xl font-bold text-slate-800 dark:text-white">รายงานเงินเดือน</h2>
<p class="text-slate-500 dark:text-slate-400 text-sm mt-1">แสดงข้อมูลรายได้และรายจ่ายของเจ้าหน้าที่ในแต่ละเดือน</p>
</div>
</div>
<div class="bg-white dark:bg-slate-800 rounded-2xl shadow-sm border border-slate-100 dark:border-slate-700 overflow-hidden mb-6 p-6">
<form method="GET" action="<?= BASE_URL ?>/reports/salary" class="flex flex-col md:flex-row gap-4 items-end">
<div class="w-full md:w-48">
<label for="month" class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">เดือน</label>
<select id="month" name="month" class="block w-full rounded-xl border-0 py-2.5 px-3 text-slate-900 dark:text-white shadow-sm ring-1 ring-inset ring-slate-300 dark:ring-slate-600 focus:ring-2 focus:ring-sky-500 bg-slate-50 dark:bg-slate-900 sm:text-sm">
<?php
$months = [
'01' => 'มกราคม', '02' => 'กุมภาพันธ์', '03' => 'มีนาคม', '04' => 'เมษายน',
'05' => 'พฤษภาคม', '06' => 'มิถุนายน', '07' => 'กรกฎาคม', '08' => 'สิงหาคม',
'09' => 'กันยายน', '10' => 'ตุลาคม', '11' => 'พฤศจิกายน', '12' => 'ธันวาคม'
];
foreach ($months as $m => $name): ?>
<option value="<?= $m ?>" <?= ($month ?? '') == $m ? 'selected' : '' ?>><?= $name ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="w-full md:w-32">
<label for="year" class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">ปี (พ.ศ.)</label>
<select id="year" name="year" class="block w-full rounded-xl border-0 py-2.5 px-3 text-slate-900 dark:text-white shadow-sm ring-1 ring-inset ring-slate-300 dark:ring-slate-600 focus:ring-2 focus:ring-sky-500 bg-slate-50 dark:bg-slate-900 sm:text-sm">
<?php
$currentYear = date('Y');
for ($y = $currentYear - 2; $y <= $currentYear + 1; $y++): ?>
<option value="<?= $y ?>" <?= ($year ?? '') == $y ? 'selected' : '' ?>><?= $y + 543 ?></option>
<?php endfor; ?>
</select>
</div>
<div class="w-full md:w-64">
<label for="type_id" class="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">ประเภทเจ้าหน้าที่</label>
<select id="type_id" name="type_id" class="block w-full rounded-xl border-0 py-2.5 px-3 text-slate-900 dark:text-white shadow-sm ring-1 ring-inset ring-slate-300 dark:ring-slate-600 focus:ring-2 focus:ring-sky-500 bg-slate-50 dark:bg-slate-900 sm:text-sm">
<option value="">-- ทั้งหมด --</option>
<?php foreach ($officerTypes as $type): ?>
<option value="<?= $type['id'] ?>" <?= ($typeId ?? '') == $type['id'] ? 'selected' : '' ?>><?= htmlspecialchars($type['name']) ?></option>
<?php endforeach; ?>
</select>
</div>
<button type="submit" class="px-6 py-2.5 bg-slate-800 hover:bg-slate-700 dark:bg-slate-700 dark:hover:bg-slate-600 text-white text-sm font-medium rounded-xl transition-colors shadow-sm w-full md:w-auto flex items-center justify-center">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-4 h-4 mr-2"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z" /></svg>
ดูรายงาน
</button>
<?php if (!empty($reportData)): ?>
<a href="<?= BASE_URL ?>/reports/salary/export?month=<?= urlencode($month) ?>&year=<?= urlencode($year) ?>&type_id=<?= urlencode($typeId) ?>" class="px-6 py-2.5 bg-emerald-600 hover:bg-emerald-700 text-white text-sm font-medium rounded-xl transition-colors shadow-sm w-full md:w-auto flex items-center justify-center">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5 mr-2"><path stroke-linecap="round" stroke-linejoin="round" d="M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5M16.5 12L12 16.5m0 0L7.5 12m4.5 4.5V3" /></svg>
ส่งออก Excel
</a>
<?php endif; ?>
</form>
</div>
<!-- DataTables CSS for Tailwind -->
<link rel="stylesheet" href="https://cdn.datatables.net/2.0.8/css/dataTables.tailwindcss.css">
<style>
/* DataTables Dark Mode Overrides */
.dark .dt-container { color: #cbd5e1; }
.dark .dt-length select, .dark .dt-search input {
background-color: #1e293b; border-color: #334155; color: #f8fafc; border-radius: 0.5rem; padding: 0.25rem 0.5rem;
}
.dark .dt-info, .dark .dt-paging-button { color: #94a3b8 !important; }
.dark .dt-paging-button.current { background: #38bdf8 !important; color: #0f172a !important; border-color: #38bdf8 !important; }
.dark .dt-paging-button:hover { background: #334155 !important; color: #f8fafc !important; }
table.dataTable.no-footer { border-bottom: 1px solid #334155 !important; }
</style>
<div class="bg-white dark:bg-slate-800 rounded-2xl shadow-sm border border-slate-100 dark:border-slate-700 overflow-hidden p-6">
<div class="overflow-x-auto">
<table id="reportTable" class="w-full text-left text-sm text-slate-600 dark:text-slate-300 display whitespace-nowrap">
<thead class="bg-slate-50 dark:bg-slate-900/50 text-slate-500 dark:text-slate-400 text-xs uppercase font-semibold">
<tr>
<th class="px-4 py-3">ลำดับ</th>
<th class="px-4 py-3">ชื่อ-สกุล</th>
<th class="px-4 py-3 text-right">เงินเดือนหลัก</th>
<th class="px-4 py-3 text-right text-emerald-600 dark:text-emerald-400">รวมรายรับ</th>
<th class="px-4 py-3 text-right text-red-600 dark:text-red-400">รวมรายจ่าย</th>
<th class="px-4 py-3 text-right text-sky-600 dark:text-sky-400">รับสุทธิ</th>
</tr>
</thead>
<tbody class="divide-y divide-slate-100 dark:divide-slate-700">
<?php if (!empty($reportData)): ?>
<?php $i = 1; foreach ($reportData as $row): ?>
<tr class="hover:bg-slate-50 dark:hover:bg-slate-700/50 transition-colors">
<td class="px-4 py-3 text-center"><?= $i++ ?></td>
<td class="px-4 py-3 font-medium text-slate-800 dark:text-slate-200">
<?= htmlspecialchars(trim($row['hr_prefix'] ?? '') . trim($row['hr_fname'] ?? '') . ' ' . trim($row['hr_lname'] ?? '')) ?>
</td>
<td class="px-4 py-3 text-right font-mono"><?= number_format($row['base_salary'] ?? 0, 2) ?></td>
<td class="px-4 py-3 text-right font-mono text-emerald-600 dark:text-emerald-400 font-medium"><?= number_format($row['total_income'] ?? 0, 2) ?></td>
<td class="px-4 py-3 text-right font-mono text-red-600 dark:text-red-400 font-medium"><?= number_format($row['total_deduction'] ?? 0, 2) ?></td>
<td class="px-4 py-3 text-right font-mono text-sky-600 dark:text-sky-400 font-bold"><?= number_format($row['net_salary'] ?? 0, 2) ?></td>
</tr>
<?php endforeach; ?>
<?php endif; ?>
</tbody>
</table>
</div>
</div>
<!-- DataTables JS -->
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script src="https://cdn.datatables.net/2.0.8/js/dataTables.js"></script>
<script src="https://cdn.datatables.net/2.0.8/js/dataTables.tailwindcss.js"></script>
<script>
$(document).ready(function() {
var t = $('#reportTable').DataTable({
"language": {
"lengthMenu": "แสดง _MENU_ รายการต่อหน้า",
"zeroRecords": "ไม่พบข้อมูล",
"info": "แสดงหน้าที่ _PAGE_ จาก _PAGES_",
"infoEmpty": "ไม่มีข้อมูล",
"infoFiltered": "(กรองจากทั้งหมด _MAX_ รายการ)",
"search": "ค้นหา:",
"paginate": {
"first": "หน้าแรก",
"last": "หน้าสุดท้าย",
"next": "ถัดไป",
"previous": "ก่อนหน้า"
}
},
"pageLength": 10,
"columnDefs": [{
"searchable": false,
"orderable": false,
"targets": 0
}],
"order": [[ 1, "asc" ]] // Sort by Name by default
});
t.on('order.dt search.dt', function () {
let i = 1;
t.cells(null, 0, { search: 'applied', order: 'applied' }).every(function (cell) {
this.data(i++);
});
}).draw();
});
</script>
<?php require_once APP_ROOT . '/app/Views/layouts/footer.php'; ?>
@@ -0,0 +1,290 @@
<?php
$thaiMonths = [
'01' => 'มกราคม', '02' => 'กุมภาพันธ์', '03' => 'มีนาคม', '04' => 'เมษายน',
'05' => 'พฤษภาคม', '06' => 'มิถุนายน', '07' => 'กรกฎาคม', '08' => 'สิงหาคม',
'09' => 'กันยายน', '10' => 'ตุลาคม', '11' => 'พฤศจิกายน', '12' => 'ธันวาคม'
];
$thaiYear = $year + 543;
$monthName = $thaiMonths[$month] ?? '';
// Grouping by Fund Source
$cgdIncomes = [];
$hospIncomes = [];
foreach($incomes as $inc) {
if ($inc['amount'] > 0) {
if (($inc['fund_source'] ?? '') === 'CGD') $cgdIncomes[] = $inc;
else $hospIncomes[] = $inc;
}
}
$cgdDeductions = [];
$hospDeductions = [];
foreach($deductions as $ded) {
if ($ded['amount'] > 0) {
if (($ded['fund_source'] ?? '') === 'CGD') $cgdDeductions[] = $ded;
else $hospDeductions[] = $ded;
}
}
$cgdTotalIncome = array_sum(array_column($cgdIncomes, 'amount'));
$cgdTotalDeduction = array_sum(array_column($cgdDeductions, 'amount'));
$hospTotalIncome = array_sum(array_column($hospIncomes, 'amount'));
$hospTotalDeduction = array_sum(array_column($hospDeductions, 'amount'));
$netSalary = ($cgdTotalIncome + $hospTotalIncome) - ($cgdTotalDeduction + $hospTotalDeduction);
?>
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>สลิปเงินเดือน - <?= htmlspecialchars($hrData['HR_FNAME'] ?? '') ?></title>
<!-- Google Fonts: Sarabun (Standard Thai Font) -->
<link href="https://fonts.googleapis.com/css2?family=Sarabun:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<!-- Tailwind CSS CDN -->
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
fontFamily: {
sans: ['Sarabun', 'sans-serif'],
}
}
}
}
</script>
<style>
@media print {
body { background: white; margin: 0; padding: 0; }
.no-print { display: none !important; }
@page { size: A4; margin: 0; } /* Set A4 without margins */
* { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }
.slip-container {
padding: 1cm !important;
box-shadow: none !important;
max-width: 100% !important;
margin: 0 !important;
width: 210mm !important;
height: 297mm !important;
box-sizing: border-box !important;
overflow: hidden !important;
page-break-after: avoid !important;
page-break-inside: avoid !important;
border: none !important;
}
}
body { font-size: <?= htmlspecialchars($slipFontSize ?? '11pt') ?>; color: #1e293b; background-color: #f8fafc; font-family: 'Sarabun', sans-serif; }
.slip-container {
width: 210mm;
min-height: 297mm;
box-sizing: border-box;
margin: 2cm auto;
background: white;
padding: 1cm;
box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
border-radius: 0.5rem;
border: 1px solid #e2e8f0;
}
table { width: 100%; border-collapse: collapse; margin-bottom: 0.75rem; }
th, td { border: 1px solid #cbd5e1; padding: 0.2rem 0.5rem; }
.bg-gray-header { background-color: #f1f5f9 !important; }
.bg-gray-light { background-color: #f8fafc !important; }
.bg-gray-dark { background-color: #e2e8f0 !important; }
.bg-white { background-color: #ffffff !important; }
.border-none { border: none !important; }
.border-l { border-left: 1px solid #cbd5e1 !important; }
.border-r { border-right: 1px solid #cbd5e1 !important; }
.border-t { border-top: 1px solid #cbd5e1 !important; }
.border-b { border-bottom: 1px solid #cbd5e1 !important; }
.w-col-name { width: 35%; }
.w-col-amt { width: 15%; }
.table-rounded { border-radius: 0.5rem; overflow: hidden; border: 1px solid #cbd5e1; }
.table-rounded table { margin-bottom: 0; }
.table-rounded th, .table-rounded td { border-color: #e2e8f0; }
.table-rounded tr:last-child td { border-bottom: none; }
</style>
</head>
<body>
<div class="fixed top-4 right-4 no-print flex space-x-2">
<button onclick="window.close()" class="px-4 py-2 bg-slate-200 hover:bg-slate-300 rounded-lg text-sm font-medium">ปิด</button>
<button onclick="window.print()" class="px-4 py-2 bg-sky-600 hover:bg-sky-700 text-white rounded-lg text-sm font-medium shadow flex items-center">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-4 h-4 mr-2"><path stroke-linecap="round" stroke-linejoin="round" d="M6.72 13.829c-.24.03-.48.062-.72.096m.72-.096a42.415 42.415 0 0 1 10.56 0m-10.56 0L6.34 18m10.94-4.171c.24.03.48.062.72.096m-.72-.096L17.66 18m0 0 .229 2.523a1.125 1.125 0 0 1-1.12 1.227H7.231c-.662 0-1.18-.568-1.12-1.227L6.34 18m11.318 0h1.091A2.25 2.25 0 0 0 21 15.75V9.456c0-1.081-.768-2.015-1.837-2.175a48.055 48.055 0 0 0-1.913-.247M6.34 18H5.25A2.25 2.25 0 0 1 3 15.75V9.456c0-1.081.768-2.015 1.837-2.175a48.041 48.041 0 0 1 1.913-.247m10.5 0a48.536 48.536 0 0 0-10.5 0m10.5 0V3.375c0-.621-.504-1.125-1.125-1.125h-8.25c-.621 0-1.125.504-1.125 1.125v3.659M18 10.5h.008v.008H18V10.5Zm-3 0h.008v.008H15V10.5Z" /></svg>
พิมพ์
</button>
</div>
<div class="slip-container">
<!-- Header Info Table -->
<table>
<tr>
<td colspan="4" class="bg-gray-header p-6 text-center relative border-b-0 rounded-t-lg">
<img src="<?= BASE_URL ?>/public/img/logo.png" alt="Logo" class="h-20 absolute top-4 left-1/2 transform -translate-x-1/2" onerror="this.style.display='none'">
<h1 class="text-3xl font-bold mt-20 text-slate-800">โรงพยาบาลเกาะสมุย</h1>
</td>
</tr>
<tr>
<td class="bg-gray-light font-bold w-[20%]">ชื่อ - สกุล</td>
<td class="w-[30%]"><?= htmlspecialchars($hrData['HR_FNAME'] ?? $salary['first_name']) ?> <?= htmlspecialchars($hrData['HR_LNAME'] ?? $salary['last_name']) ?></td>
<td class="bg-gray-light font-bold w-[20%]">ตำแหน่ง</td>
<td class="w-[30%]"><?= htmlspecialchars($hrData['HR_POSITION_NAME'] ?? '-') ?></td>
</tr>
<tr>
<td class="bg-gray-light font-bold">กรม</td>
<td>สำนักงานปลัดกระทรวงสาธารณสุข</td>
<td class="bg-gray-light font-bold">ระดับ</td>
<td><?= htmlspecialchars($hrData['HR_LEVEL_NAME'] ?? 'ชำนาญการ') ?></td>
</tr>
<tr>
<td class="bg-gray-light font-bold">สำนัก/กอง/ศูนย์</td>
<td>โรงพยาบาลทั่วไปเกาะสมุย</td>
<td class="bg-gray-light font-bold">เลขที่ตำแหน่ง</td>
<td><?= htmlspecialchars($hrData['HR_POSITION_NUM'] ?? '-') ?></td>
</tr>
<tr>
<td class="bg-gray-light font-bold">รอบจ่าย</td>
<td>เดือน <?= $monthName ?> ปี <?= $thaiYear ?></td>
<td class="bg-gray-light font-bold">แผนก</td>
<td><?= htmlspecialchars($hrData['HR_DEPARTMENT_SUB_SUB_NAME'] ?? '-') ?></td>
</tr>
<tr>
<td class="bg-gray-light font-bold">โอนเงินเข้า</td>
<td class="w-[30%]"><?= htmlspecialchars($bankProfile['bank_name'] ?? 'ธนาคารกรุงไทย จำกัด(มหาชน)') ?></td>
<td class="bg-gray-light font-bold w-[20%]">เลขที่บัญชี</td>
<td class="w-[30%]"><?= htmlspecialchars($bankProfile['bank_account'] ?? '-') ?></td>
</tr>
</table>
<?php if (!empty($cgdIncomes) || !empty($cgdDeductions)): ?>
<!-- Section 1: กรมบัญชีกลาง -->
<table class="mb-4">
<tr>
<td colspan="4" class="bg-gray-dark font-bold text-lg p-3 text-slate-800 border-x-0 border-t-0">รายการจากกรมบัญชีกลาง</td>
</tr>
<tr class="bg-gray-light text-center font-bold">
<td class="w-col-name">รายรับ</td>
<td class="w-col-amt">จำนวน (บาท)</td>
<td class="w-col-name">รายจ่าย</td>
<td class="w-col-amt">จำนวน (บาท)</td>
</tr>
<?php
$maxCgdRows = max(count($cgdIncomes), count($cgdDeductions), 1);
for($i=0; $i<$maxCgdRows; $i++):
$inc = $cgdIncomes[$i] ?? null;
$ded = $cgdDeductions[$i] ?? null;
?>
<tr>
<td class="border-t-0 border-b-0 border-l border-r"><?= $inc ? htmlspecialchars($inc['name']) : '&nbsp;' ?></td>
<td class="border-t-0 border-b-0 border-l border-r text-right"><?= $inc ? number_format($inc['amount'], 2) : '' ?></td>
<td class="border-t-0 border-b-0 border-l border-r"><?= $ded ? htmlspecialchars($ded['name']) : '' ?></td>
<td class="border-t-0 border-b-0 border-l border-r text-right"><?= $ded ? number_format($ded['amount'], 2) : '' ?></td>
</tr>
<?php endfor; ?>
<tr>
<td class="border-t border-b border-l border-r font-bold text-center bg-gray-light text-slate-700">รวมรับ</td>
<td class="border-t border-b border-l border-r text-right font-medium"><?= number_format($cgdTotalIncome, 2) ?></td>
<td class="border-t border-b border-l border-r font-bold text-center bg-gray-light text-slate-700">รวมจ่าย</td>
<td class="border-t border-b border-l border-r text-right font-medium"><?= number_format($cgdTotalDeduction, 2) ?></td>
</tr>
<tr>
<td colspan="2" class="border-t border-b border-l border-r bg-white" style="border-right: none;"></td>
<td class="border-t border-b border-l border-r font-bold text-center bg-gray-dark text-slate-800">รับสุทธิจากกรมบัญชีกลาง</td>
<td class="border-t border-b border-l border-r text-right bg-white font-bold text-sky-700"><?= number_format($cgdTotalIncome - $cgdTotalDeduction, 2) ?></td>
</tr>
</table>
<?php endif; ?>
<?php if (!empty($hospIncomes) || !empty($hospDeductions)): ?>
<!-- Section 2: โรงพยาบาล -->
<table class="mb-4">
<tr>
<td colspan="4" class="bg-gray-dark font-bold text-lg p-3 text-slate-800 border-x-0 border-t-0">รายการจากโรงพยาบาล</td>
</tr>
<tr class="bg-gray-light text-center font-bold">
<td class="w-col-name">รายรับ</td>
<td class="w-col-amt">จำนวน (บาท)</td>
<td class="w-col-name">รายจ่าย</td>
<td class="w-col-amt">จำนวน (บาท)</td>
</tr>
<?php
$maxHospRows = max(count($hospIncomes), count($hospDeductions), 1);
for($i=0; $i<$maxHospRows; $i++):
$inc = $hospIncomes[$i] ?? null;
$ded = $hospDeductions[$i] ?? null;
?>
<tr>
<td class="border-t-0 border-b-0 border-l border-r"><?= $inc ? htmlspecialchars($inc['name']) : '&nbsp;' ?></td>
<td class="border-t-0 border-b-0 border-l border-r text-right"><?= $inc ? number_format($inc['amount'], 2) : '' ?></td>
<td class="border-t-0 border-b-0 border-l border-r"><?= $ded ? htmlspecialchars($ded['name']) : '' ?></td>
<td class="border-t-0 border-b-0 border-l border-r text-right"><?= $ded ? number_format($ded['amount'], 2) : '' ?></td>
</tr>
<?php endfor; ?>
<tr>
<td class="border-t border-b border-l border-r font-bold text-center bg-gray-light text-slate-700">รวมรับ</td>
<td class="border-t border-b border-l border-r text-right font-medium"><?= number_format($hospTotalIncome, 2) ?></td>
<td class="border-t border-b border-l border-r font-bold text-center bg-gray-light text-slate-700">รวมจ่าย</td>
<td class="border-t border-b border-l border-r text-right font-medium"><?= number_format($hospTotalDeduction, 2) ?></td>
</tr>
<tr>
<td colspan="2" class="border-t border-b border-l border-r bg-white" style="border-right: none;"></td>
<td class="border-t border-b border-l border-r font-bold text-center bg-gray-dark text-slate-800">รับสุทธิจากโรงพยาบาล</td>
<td class="border-t border-b border-l border-r text-right bg-white font-bold text-sky-700"><?= number_format($hospTotalIncome - $hospTotalDeduction, 2) ?></td>
</tr>
</table>
<?php endif; ?>
<!-- Grand Totals -->
<table class="mb-4">
<tr>
<td class="bg-gray-dark font-bold text-center text-xl p-4 w-[85%] text-slate-800 rounded-l-lg border-r-0">รวมรับสุทธิทั้งสิ้น</td>
<td class="text-right font-bold text-xl p-4 w-[15%] bg-white text-emerald-600 rounded-r-lg border-l-0"><?= number_format($netSalary, 2) ?></td>
</tr>
</table>
<!-- Signature -->
<div class="mt-16 flex justify-end pr-8">
<table class="text-center w-72 border-none">
<tr class="border-none">
<td class="text-right w-16 pr-2 border-none pb-1 align-bottom text-slate-700">ลงชื่อ</td>
<td class="border-b border-dotted border-slate-300 border-t-0 border-l-0 border-r-0 h-16 align-bottom pb-1 relative">
<?php
$sigPath = APP_ROOT . '/public/img/signature.png';
if (file_exists($sigPath)):
$modTime = filemtime($sigPath);
// signatureScale from Controller (default 100)
$scale = $signatureScale ?? 100;
$maxHeight = 3 * ($scale / 100) . 'rem'; // 3rem is roughly 48px (h-12)
// Signature position shift (default 0)
$posX = $signaturePosX ?? '0';
$posY = $signaturePosY ?? '0';
?>
<img src="<?= BASE_URL ?>/public/img/signature.png?t=<?= $modTime ?>" alt="Signature" class="mx-auto object-contain mix-blend-multiply absolute bottom-1 left-0 right-0" style="max-height: <?= $maxHeight ?>; transform: translate(<?= $posX ?>px, <?= $posY ?>px);" onerror="this.style.display='none'">
<?php endif; ?>
</td>
</tr>
<tr class="border-none">
<td class="border-none"></td>
<td class="pt-4 border-none"><?= htmlspecialchars($signatureName ?? '( นางณัฐฐิณี เรืองทอง )') ?></td>
</tr>
<tr class="border-none">
<td class="border-none"></td>
<td class="border-none"><?= htmlspecialchars($signaturePosition ?? 'นักวิชาการเงินและบัญชี') ?></td>
</tr>
</table>
</div>
</div>
</body>
</html>
@@ -0,0 +1,515 @@
<?php
$thaiYear = $year + 543;
$totalIncome = $yearlySummary['total_income'] ?? 0;
$totalTaxable = $yearlySummary['total_taxable_income'] ?? 0;
$totalTax = $yearlySummary['total_tax'] ?? 0;
$totalSsf = $yearlySummary['total_ssf'] ?? 0;
$totalKhbk = $yearlySummary['total_khbk'] ?? 0; // กบข.
if ($totalTaxable == 0 && $totalIncome > 0) {
$totalTaxable = $totalIncome;
}
// Format numbers
$fmtTaxable = $totalTaxable > 0 ? number_format($totalTaxable, 2) : '-';
$fmtTax = $totalTax > 0 ? number_format($totalTax, 2) : '-';
// Signature logic
$hasSignature = !empty($taxSignatureName) || file_exists(APP_ROOT . '/public/img/tax_signature.png');
$sigScale = isset($taxSignatureScale) ? (int)$taxSignatureScale / 100 : 1.0;
$sigPosX = isset($taxSignaturePosX) ? (int)$taxSignaturePosX : 0;
$sigPosY = isset($taxSignaturePosY) ? (int)$taxSignaturePosY : 0;
$sigWidth = 150 * $sigScale;
// Print Date logic
$thaiMonths = ['', 'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม'];
$printDay = date('j');
$printMonth = $thaiMonths[date('n')];
$printYear = date('Y') + 543;
// Thai Baht text conversion function
function bahtText($amount) {
if ($amount == 0) return 'ศูนย์บาทถ้วน';
$amount = number_format($amount, 2, '.', '');
$number = explode('.', $amount);
$text = '';
$numberText = ['ศูนย์', 'หนึ่ง', 'สอง', 'สาม', 'สี่', 'ห้า', 'หก', 'เจ็ด', 'แปด', 'เก้า'];
$positionText = ['', 'สิบ', 'ร้อย', 'พัน', 'หมื่น', 'แสน', 'ล้าน'];
foreach ($number as $index => $part) {
$partText = '';
$part = (string)(int)$part;
if ($part === '0') continue;
$length = strlen($part);
for ($i = 0; $i < $length; $i++) {
$digit = (int)$part[$i];
$position = $length - $i - 1;
if ($digit !== 0) {
if ($position === 1 && $digit === 1) {
$partText .= $positionText[$position];
} elseif ($position === 1 && $digit === 2) {
$partText .= 'ยี่' . $positionText[$position];
} elseif ($position === 0 && $digit === 1 && $length > 1) {
$partText .= 'เอ็ด';
} else {
$partText .= $numberText[$digit] . $positionText[$position];
}
}
}
if ($index === 0) {
$text .= $partText . 'บาท';
} elseif ($index === 1) {
$text .= $partText . 'สตางค์';
}
}
if (count($number) == 1 || (int)$number[1] == 0) {
$text .= 'ถ้วน';
}
return $text;
}
$fmtTaxableStr = bahtText($totalTaxable);
$fmtTaxStr = bahtText($totalTax);
?>
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>หนังสือรับรองการหักภาษี ณ ที่จ่าย (50 ทวิ) - <?= htmlspecialchars($hrData['HR_FNAME'] ?? '') ?></title>
<link href="https://fonts.googleapis.com/css2?family=Sarabun:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
fontFamily: { sans: ['Sarabun', 'sans-serif'] }
}
}
}
</script>
<style>
body { font-size: <?= htmlspecialchars($taxFontSize ?? '11pt') ?>; color: #000; background-color: #525659; }
.page {
background: white;
width: 210mm;
min-height: 297mm;
margin: 0 auto;
padding: 10mm;
box-shadow: 0 0 10px rgba(0,0,0,0.5);
margin-bottom: 2cm;
position: relative;
box-sizing: border-box;
}
.form-border { border: 1px solid #000; }
.form-border-t { border-top: 1px solid #000; }
.form-border-b { border-bottom: 1px solid #000; }
.form-border-l { border-left: 1px solid #000; }
.form-border-r { border-right: 1px solid #000; }
.checkbox { width: 14px; height: 14px; border: 1px solid #000; display: inline-block; vertical-align: middle; position: relative; margin-right: 4px; margin-left: 8px; }
.checkbox:first-child { margin-left: 0; }
.checkbox.checked::after { content: '✓'; position: absolute; top: -3px; left: 1px; font-weight: bold; font-size: 12px; color: #000; }
table.data-table { width: 100%; border-collapse: collapse; }
table.data-table th, table.data-table td { border: 1px solid #a3a3a3; padding: 1px 4px; vertical-align: middle; }
table.data-table tr:last-child td { border-bottom: none; }
/* Compact line height for strict fitting */
.compact-text { line-height: 1.1; }
.small-text { font-size: 0.8em; }
/* Char boxes */
.char-box { display: inline-flex; }
.char-box span { width: 14px; height: 20px; border: 1px solid #000; display: inline-flex; justify-content: center; align-items: center; font-size: 10pt; margin-right: 2px; }
.char-box .gap { border: none !important; width: 6px; margin-right: 0; }
/* Dotted lines */
.border-dotted { border-color: #aaa !important; border-width: 1px !important; }
@media print {
body {
background: white;
margin: 0;
padding: 0;
zoom: 95%; /* ปรับ scale ลง 5% สำหรับ Chrome/Edge ให้พอดีหน้า */
}
.page {
width: 100%;
margin: 0;
padding: 5mm 8mm; /* ลดขอบกระดาษตอนพิมพ์ลงเพื่อเพิ่มพื้นที่แนวตั้ง */
box-shadow: none;
border: none;
page-break-inside: avoid;
page-break-after: always;
}
.no-print { display: none !important; }
@page { size: A4; margin: 0; }
}
</style>
</head>
<body class="py-4 font-sans print:py-0">
<div class="fixed top-4 right-4 no-print flex space-x-2 z-50">
<button onclick="window.close()" class="px-4 py-2 bg-slate-200 hover:bg-slate-300 rounded-lg text-sm font-medium">ปิด</button>
<button onclick="window.print()" class="px-4 py-2 bg-indigo-600 hover:bg-indigo-700 text-white rounded-lg text-sm font-medium shadow flex items-center">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-4 h-4 mr-2"><path stroke-linecap="round" stroke-linejoin="round" d="M6.72 13.829c-.24.03-.48.062-.72.096m.72-.096a42.415 42.415 0 0 1 10.56 0m-10.56 0L6.34 18m10.94-4.171c.24.03.48.062.72.096m-.72-.096L17.66 18m0 0 .229 2.523a1.125 1.125 0 0 1-1.12 1.227H7.231c-.662 0-1.18-.568-1.12-1.227L6.34 18m11.318 0h1.091A2.25 2.25 0 0 0 21 15.75V9.456c0-1.081-.768-2.015-1.837-2.175a48.055 48.055 0 0 0-1.913-.247M6.34 18H5.25A2.25 2.25 0 0 1 3 15.75V9.456c0-1.081.768-2.015 1.837-2.175a48.041 48.041 0 0 1 1.913-.247m10.5 0a48.536 48.536 0 0 0-10.5 0m10.5 0V3.375c0-.621-.504-1.125-1.125-1.125h-8.25c-.621 0-1.125.504-1.125 1.125v3.659M18 10.5h.008v.008H18V10.5Zm-3 0h.008v.008H15V10.5Z" /></svg>
พิมพ์เอกสาร
</button>
</div>
<!-- START PAGE -->
<div class="page compact-text relative">
<!-- Header -->
<div class="flex justify-between items-start mb-1">
<div class="w-1/4">
<!-- ฉบับที่ is usually inside the form box or top left, standard form has it inside -->
</div>
<div class="w-2/4 text-center">
<h1 class="text-xl font-bold mb-0">หนังสือรับรองการหักภาษี ณ ที่จ่าย</h1>
<p class="font-bold">ตามมาตรา 50 ทวิ แห่งประมวลรัษฎากร</p>
</div>
<div class="w-1/4 text-right text-[9pt] text-slate-700 pt-2">
<div class="flex justify-end items-end mb-1">
<span class="mr-1">เล่มที่</span> <span class="inline-block w-20 border-b border-dotted border-slate-400"></span>
</div>
<div class="flex justify-end items-end">
<span class="mr-1">เลขที่</span> <span class="inline-block w-20 border-b border-dotted border-slate-400"></span>
</div>
</div>
</div>
<div class="flex justify-between text-xs mb-1">
<div>
ฉบับที่ 1 (สำหรับผู้ถูกหักภาษี ณ ที่จ่าย ใช้แนบพร้อมกับแบบแสดงรายการภาษี)<br>
ฉบับที่ 2 (สำหรับผู้ถูกหักภาษี ณ ที่จ่าย เก็บไว้เป็นหลักฐาน)
</div>
</div>
<!-- Main Outer Box -->
<div class="form-border w-full">
<!-- Payer Section -->
<div class="p-1 pb-1">
<div class="flex justify-between items-center mb-1">
<b>ผู้มีหน้าที่หักภาษี ณ ที่จ่าย :</b>
<div class="flex items-center pr-2">
<span class="mr-2">เลขประจำตัวผู้เสียภาษีอากร (13 หลัก)*</span>
<div class="char-box">
<?php
$orgId = str_replace('-', '', $orgTaxId ?? '');
$orgId = str_pad($orgId, 13, ' ', STR_PAD_RIGHT);
for ($i = 0; $i < 13; $i++) {
echo "<span>" . htmlspecialchars($orgId[$i]) . "</span>";
if (in_array($i, [0, 4, 9, 11])) echo "<div class='gap'></div>";
}
?>
</div>
</div>
</div>
<div class="flex items-end mt-1">
<b class="w-10">ชื่อ</b>
<div class="border-b border-dotted border-black flex-grow text-[11pt] px-4 text-left">โรงพยาบาลเกาะสมุย</div>
</div>
<div class="small-text font-normal text-slate-600 ml-10 leading-tight">(ให้ระบุว่าเป็น บุคคล นิติบุคคล บริษัท สมาคม หรือคณะบุคคล)</div>
<div class="flex items-end mt-1">
<b class="w-10">ที่อยู่</b>
<div class="border-b border-dotted border-black flex-grow text-[11pt] px-4 text-left"><?= htmlspecialchars($orgAddress ?? 'ต.อ่างทอง อ.เกาะสมุย จ.สุราษฎร์ธานี 84140') ?></div>
</div>
<div class="small-text font-normal text-slate-600 ml-10 leading-tight mb-1">(ให้ระบุชื่ออาคาร/หมู่บ้าน ห้องเลขที่ ชั้นที่ เลขที่ ตรอก/ซอย หมู่ที่ ถนน ตำบล/แขวง อำเภอ/เขต จังหวัด)</div>
</div>
<!-- Payee Section -->
<div class="p-1 pb-1 border-t border-black">
<div class="flex justify-between items-center mb-1">
<b>ผู้ถูกหักภาษี ณ ที่จ่าย :</b>
<div class="flex items-center pr-2">
<span class="mr-2">เลขประจำตัวผู้เสียภาษีอากร (13 หลัก)*</span>
<div class="char-box">
<?php
$nid = str_replace('-', '', $nationalId ?? '');
$nid = str_pad($nid, 13, ' ', STR_PAD_RIGHT);
for ($i = 0; $i < 13; $i++) {
echo "<span>" . htmlspecialchars($nid[$i]) . "</span>";
if (in_array($i, [0, 4, 9, 11])) echo "<div class='gap'></div>";
}
?>
</div>
</div>
</div>
<div class="flex items-end mt-1">
<b class="w-10">ชื่อ</b>
<div class="border-b border-dotted border-black flex-grow text-[11pt] px-4 text-left"><?= htmlspecialchars($hrData['HR_PREFIX_NAME'] ?? '') ?><?= htmlspecialchars($hrData['HR_FNAME'] ?? '') ?> <?= htmlspecialchars($hrData['HR_LNAME'] ?? '') ?></div>
</div>
<div class="small-text font-normal text-slate-600 ml-10 leading-tight">(ให้ระบุว่าเป็น บุคคล นิติบุคคล บริษัท สมาคม หรือคณะบุคคล)</div>
<div class="flex items-end mt-1">
<b class="w-10">ที่อยู่</b>
<div class="border-b border-dotted border-black flex-grow text-[11pt] px-4 text-left"><?= htmlspecialchars($taxPayeeAddress ?? 'ต.อ่างทอง อ.เกาะสมุย จ.สุราษฎร์ธานี 84140') ?></div>
</div>
<div class="small-text font-normal text-slate-600 ml-10 leading-tight mb-1">(ให้ระบุชื่ออาคาร/หมู่บ้าน ห้องเลขที่ ชั้นที่ เลขที่ ตรอก/ซอย หมู่ที่ ถนน ตำบล/แขวง อำเภอ/เขต จังหวัด)</div>
</div>
<!-- Form Type Checkboxes -->
<div class="p-1 border-t border-black text-[10pt]">
<div class="flex items-start">
<div class="flex items-end mr-4 shrink-0 pb-1">
<b class="mr-1">ลำดับที่</b>
<span class="border-b border-dotted border-black inline-block w-12 text-center translate-y-[-2px]"></span>
<span class="ml-4">ในแบบ</span>
</div>
<div class="flex flex-wrap items-center flex-1">
<div class="flex items-center mr-4 mb-1"><span class="checkbox checked mr-1 ml-0"></span> (1) ภ.ง.ด.1ก</div>
<div class="flex items-center mr-4 mb-1"><span class="checkbox mr-1 ml-0"></span> (2) ภ.ง.ด.1ก พิเศษ</div>
<div class="flex items-center mr-4 mb-1"><span class="checkbox mr-1 ml-0"></span> (3) ภ.ง.ด.2</div>
<div class="flex items-center mr-4 mb-1"><span class="checkbox mr-1 ml-0"></span> (4) ภ.ง.ด.3</div>
<div class="flex items-center mr-4 mb-1"><span class="checkbox mr-1 ml-0"></span> (5) ภ.ง.ด.2ก</div>
<div class="flex items-center mr-4 mb-1"><span class="checkbox mr-1 ml-0"></span> (6) ภ.ง.ด.3ก</div>
<div class="flex items-center mr-4 mb-1"><span class="checkbox mr-1 ml-0"></span> (7) ภ.ง.ด.53</div>
</div>
</div>
<div class="small-text text-slate-600 mt-1 leading-tight">
(ให้สามารถอ้างอิงหรือสอบยันกันได้ระหว่างลำดับที่ตามหนังสือรับรองฯ กับแบบยื่นรายการภาษีหักที่จ่าย)
</div>
</div>
<!-- Table -->
<table class="data-table border-t border-black text-[10pt] w-full border-b-0 border-l-0 border-r-0">
<thead class="text-center font-bold align-middle bg-white">
<tr>
<th class="w-[60%] border-l-0 border-t-0 border-b-black py-2">ประเภทเงินได้พึงประเมินที่จ่าย</th>
<th class="w-[12%] border-t-0 border-b-black py-2">วัน เดือน<br>หรือปีภาษี ที่จ่าย</th>
<th class="w-[14%] border-t-0 border-b-black py-2">จำนวนเงินที่จ่าย</th>
<th class="w-[14%] border-r-0 border-t-0 border-b-black py-2">ภาษีที่หัก<br>และนำส่งไว้</th>
</tr>
</thead>
<tbody>
<tr>
<td class="border-l-0">1. เงินเดือน ค่าจ้าง เบี้ยเลี้ยง โบนัส ฯลฯ ตามมาตรา 40 (1)</td>
<td class="text-center">ปี <?= $thaiYear ?></td>
<td class="text-right"><?= $fmtTaxable ?></td>
<td class="text-right border-r-0"><?= $fmtTax ?></td>
</tr>
<tr>
<td class="border-l-0">2. ค่าธรรมเนียม ค่านายหน้า ฯลฯ ตามมาตรา 40 (2)</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0">3. ค่าแห่งลิขสิทธิ์ ฯลฯ ตามมาตรา 40 (3)</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0">4. (ก) ดอกเบี้ย ฯลฯ ตามมาตรา 40 (4) (ก)</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-4">(ข) เงินปันผล เงินส่วนแบ่งกำไร ฯลฯ ตามมาตรา 40 (4) (ข)</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-8">(1) กรณีผู้ได้รับเงินปันผลได้รับเครดิตภาษี โดยจ่ายจาก<br>
&nbsp;&nbsp;&nbsp;&nbsp;กำไรสุทธิของกิจการที่ต้องเสียภาษีเงินได้นิติบุคคลในอัตราดังนี้
</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-10">(1.1) อัตราร้อยละ 30 ของกำไรสุทธิ</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-10">(1.2) อัตราร้อยละ 25 ของกำไรสุทธิ</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-10">(1.3) อัตราร้อยละ 20 ของกำไรสุทธิ</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-10">(1.4) อัตราอื่น ๆ (ระบุ)........................... ของกำไรสุทธิ</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-8">(2) กรณีผู้ได้รับเงินปันผลไม่ได้รับเครดิตภาษี เนื่องจากจ่ายจาก</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-10">(2.1) กำไรสุทธิของกิจการที่ได้รับยกเว้นภาษีเงินได้นิติบุคคล</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-10">(2.2) เงินปันผลหรือเงินส่วนแบ่งของกำไรที่ได้รับยกเว้นไม่ต้องนำมารวม<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;คำนวณเป็นรายได้เพื่อเสียภาษีเงินได้นิติบุคคล
</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-10">(2.3) กำไรสุทธิส่วนที่ได้หักผลขาดทุนสุทธิยกมาไม่เกิน 5 ปี<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ก่อนรอบระยะเวลาบัญชีปีปัจจุบัน
</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-10">(2.4) กำไรที่รับรู้ทางบัญชีโดยวิธีส่วนได้เสีย (equity method)</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-10">(2.5) อื่น ๆ (ระบุ)..................................................................................</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0">
5. การจ่ายเงินได้ที่ต้องหักภาษี ณ ที่จ่าย ตามคำสั่งกรมสรรพากรที่ออกตามมาตรา<br>
&nbsp;&nbsp;&nbsp;3 เตส เช่น รางวัล ส่วนลดหรือประโยชน์ใด ๆ เนื่องจากการส่งเสริมการขาย รางวัล<br>
&nbsp;&nbsp;&nbsp;ในการประกวด การแข่งขัน การชิงโชค ค่าแสดงของนักแสดงสาธารณะ ค่าจ้าง<br>
&nbsp;&nbsp;&nbsp;ทำของ ค่าโฆษณา ค่าเช่า ค่าขนส่ง ค่าบริการ ค่าเบี้ยประกันวินาศภัย ฯลฯ
</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0">6. อื่น ๆ (ระบุ)....................................................................................................................</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr class="font-bold">
<td colspan="2" class="text-center border-l-0">รวมเงินที่จ่ายและภาษีที่หักนำส่ง</td>
<td class="text-right"><?= $fmtTaxable ?></td>
<td class="text-right border-r-0"><?= $fmtTax ?></td>
</tr>
<tr>
<td colspan="4" class="border-l-0 border-r-0 pb-1 pt-1">
รวมเงินที่จ่าย (ตัวอักษร) <span class="inline-block border-b border-dotted border-black w-[80%] text-center pl-2">&nbsp;&nbsp;( <?= htmlspecialchars($fmtTaxableStr) ?> )</span>
</td>
</tr>
<tr>
<td colspan="4" class="border-l-0 border-r-0 pb-1 pt-1 border-t-0">
รวมเงินภาษีที่หักนำส่ง (ตัวอักษร) <span class="inline-block border-b border-dotted border-black w-[80%] text-center pl-2">&nbsp;&nbsp;( <?= htmlspecialchars($fmtTaxStr) ?> )</span>
</td>
</tr>
</tbody>
</table>
<!-- Funds Section -->
<div class="p-1 border-t border-black text-[10pt] flex items-center justify-between">
<span>เงินที่จ่ายเข้า กบข./กสจ./กองทุนสงเคราะห์ครูโรงเรียนเอกชน <span class="border-b border-dotted border-black inline-block w-24 text-center"><?= number_format($totalKhbk, 2) ?></span> บาท</span>
<span>กองทุนประกันสังคม <span class="border-b border-dotted border-black inline-block w-24 text-center"><?= number_format($totalSsf, 2) ?></span> บาท</span>
<span>กองทุนสำรองเลี้ยงชีพ <span class="border-b border-dotted border-black inline-block w-24 text-center"></span> บาท</span>
</div>
<!-- Condition Section -->
<div class="p-1 border-t border-black text-[10pt] flex items-center bg-slate-100/50 whitespace-nowrap overflow-hidden">
<b class="mr-4">ผู้จ่ายเงิน</b>
<span class="checkbox checked"></span> (1) หัก ณ ที่จ่าย
<span class="checkbox ml-3"></span> (2) ออกให้ตลอดไป
<span class="checkbox ml-3"></span> (3) ออกให้ครั้งเดียว
<span class="checkbox ml-3"></span> (4) อื่น ๆ (ระบุ)<span class="inline-block border-b border-dotted w-16 ml-1"></span>
</div>
<!-- Signature Section -->
<div class="flex border-t border-black min-h-[100px]">
<!-- Warning Text -->
<div class="w-[35%] p-2 border-r border-black text-[10pt]">
<b>คำเตือน</b> ผู้มีหน้าที่ออกหนังสือรับรองการหักภาษี ณ ที่จ่าย<br>
<span class="pl-10">ฝ่าฝืนไม่ปฏิบัติตามมาตรา 50 ทวิ แห่งประมวล<br></span>
<span class="pl-10">รัษฎากร ต้องรับโทษทางอาญาตามมาตรา 35<br></span>
<span class="pl-10">แห่งประมวลรัษฎากร</span>
</div>
<!-- Signature Area -->
<div class="w-[65%] p-2 relative text-center text-[10pt]">
<p class="mb-4">ขอรับรองว่าข้อความและตัวเลขดังกล่าวข้างต้นถูกต้องตรงกับความจริงทุกประการ</p>
<?php if ($hasSignature): ?>
<div class="absolute inset-0 flex justify-center items-center pointer-events-none mt-4">
<?php if (file_exists(APP_ROOT . '/public/img/tax_signature.png')): ?>
<img src="<?= BASE_URL ?>/public/img/tax_signature.png?t=<?= time() ?>"
class="mix-blend-multiply dark:mix-blend-normal z-10"
style="width: <?= $sigWidth ?>px; transform: translate(<?= $sigPosX ?>px, <?= $sigPosY ?>px);"
alt="Signature">
<?php endif; ?>
</div>
<?php endif; ?>
<div class="flex justify-center items-end mt-8 relative z-20">
<span class="mr-2">ลงชื่อ</span>
<div class="border-b border-dotted border-black w-64 text-center"></div>
<span class="ml-2">ผู้จ่ายเงิน</span>
<!-- Seal Circle Placeholder -->
<div class="absolute right-4 bottom-0 w-16 h-16 rounded-full border border-black flex items-center justify-center text-[8pt] text-center leading-tight">
ประทับตรา<br>นิติบุคคล<br>(ถ้ามี)
</div>
</div>
<div class="mt-1 relative z-20"><span class="font-semibold text-sky-800 dark:text-sky-300 print-text-black"><?= htmlspecialchars($taxSignatureName ?: '......................................................') ?></span></div>
<div class="mt-1 flex justify-center items-center gap-1 relative z-20">
<span>(วัน เดือน ปี ที่ออกหนังสือรับรองฯ)</span>
</div>
<div class="mt-1 flex justify-center items-center gap-1 relative z-20">
<span class="w-10 border-b border-dotted border-black inline-block text-center"><?= $printDay ?></span>
<span>/</span>
<span class="w-24 border-b border-dotted border-black inline-block text-center"><?= $printMonth ?></span>
<span>/</span>
<span class="w-14 border-b border-dotted border-black inline-block text-center"><?= $printYear ?></span>
</div>
</div>
</div>
</div>
<!-- Footer Note -->
<div class="text-[9pt] mt-1">
<b>หมายเหตุ</b> เลขประจำตัวผู้เสียภาษีอากร (13 หลัก)* หมายถึง
1. กรณีบุคคลธรรมดาไทย ให้ใช้เลขประจำตัวประชาชนของกรมการปกครอง<br>
<span class="pl-[200px]">2. กรณีนิติบุคคล ให้ใช้เลขทะเบียนนิติบุคคลของกรมพัฒนาธุรกิจการค้า</span><br>
<span class="pl-[200px]">3. กรณีอื่นๆ นอกเหนือจาก 1. และ 2. ให้ใช้เลขประจำตัวผู้เสียภาษีอากร (13 หลัก) ของกรมสรรพากร</span>
</div>
</div>
</body>
</html>
@@ -0,0 +1,543 @@
<?php
$thaiYear = $year + 543;
// Signature logic
$hasSignature = !empty($taxSignatureName) || file_exists(APP_ROOT . '/public/img/tax_signature.png');
$sigScale = isset($taxSignatureScale) ? (int)$taxSignatureScale / 100 : 1.0;
$sigPosX = isset($taxSignaturePosX) ? (int)$taxSignaturePosX : 0;
$sigPosY = isset($taxSignaturePosY) ? (int)$taxSignaturePosY : 0;
$sigWidth = 150 * $sigScale;
// Print Date logic
$thaiMonths = ['', 'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม'];
$printDay = date('j');
$printMonth = $thaiMonths[date('n')];
$printYear = date('Y') + 543;
// Thai Baht text conversion function
function bahtText($amount) {
if ($amount == 0) return 'ศูนย์บาทถ้วน';
$amount = number_format($amount, 2, '.', '');
$number = explode('.', $amount);
$text = '';
$numberText = ['ศูนย์', 'หนึ่ง', 'สอง', 'สาม', 'สี่', 'ห้า', 'หก', 'เจ็ด', 'แปด', 'เก้า'];
$positionText = ['', 'สิบ', 'ร้อย', 'พัน', 'หมื่น', 'แสน', 'ล้าน'];
foreach ($number as $index => $part) {
$partText = '';
$part = (string)(int)$part;
if ($part === '0') continue;
$length = strlen($part);
for ($i = 0; $i < $length; $i++) {
$digit = (int)$part[$i];
$position = $length - $i - 1;
if ($digit !== 0) {
if ($position === 1 && $digit === 1) {
$partText .= $positionText[$position];
} elseif ($position === 1 && $digit === 2) {
$partText .= 'ยี่' . $positionText[$position];
} elseif ($position === 0 && $digit === 1 && $length > 1) {
$partText .= 'เอ็ด';
} else {
$partText .= $numberText[$digit] . $positionText[$position];
}
}
}
if ($index === 0) {
$text .= $partText . 'บาท';
} elseif ($index === 1) {
$text .= $partText . 'สตางค์';
}
}
if (count($number) == 1 || (int)$number[1] == 0) {
$text .= 'ถ้วน';
}
return $text;
}
// Function was moved to earlier line
?>
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>หนังสือรับรองการหักภาษี ณ ที่จ่าย (50 ทวิ) - กลุ่ม</title>
<link href="https://fonts.googleapis.com/css2?family=Sarabun:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
fontFamily: { sans: ['Sarabun', 'sans-serif'] }
}
}
}
</script>
<style>
body { font-size: <?= htmlspecialchars($taxFontSize ?? '11pt') ?>; color: #000; background-color: #525659; }
.page {
background: white;
width: 210mm;
min-height: 297mm;
margin: 0 auto;
padding: 10mm;
box-shadow: 0 0 10px rgba(0,0,0,0.5);
margin-bottom: 2cm;
position: relative;
box-sizing: border-box;
}
.form-border { border: 1px solid #000; }
.form-border-t { border-top: 1px solid #000; }
.form-border-b { border-bottom: 1px solid #000; }
.form-border-l { border-left: 1px solid #000; }
.form-border-r { border-right: 1px solid #000; }
.checkbox { width: 14px; height: 14px; border: 1px solid #000; display: inline-block; vertical-align: middle; position: relative; margin-right: 4px; margin-left: 8px; }
.checkbox:first-child { margin-left: 0; }
.checkbox.checked::after { content: '✓'; position: absolute; top: -3px; left: 1px; font-weight: bold; font-size: 12px; color: #000; }
table.data-table { width: 100%; border-collapse: collapse; }
table.data-table th, table.data-table td { border: 1px solid #a3a3a3; padding: 1px 4px; vertical-align: middle; }
table.data-table tr:last-child td { border-bottom: none; }
/* Compact line height for strict fitting */
.compact-text { line-height: 1.1; }
.small-text { font-size: 0.8em; }
/* Char boxes */
.char-box { display: inline-flex; }
.char-box span { width: 14px; height: 20px; border: 1px solid #000; display: inline-flex; justify-content: center; align-items: center; font-size: 10pt; margin-right: 2px; }
.char-box .gap { border: none !important; width: 6px; margin-right: 0; }
/* Dotted lines */
.border-dotted { border-color: #aaa !important; border-width: 1px !important; }
@media print {
body {
background: white;
margin: 0;
padding: 0;
zoom: 95%; /* ปรับ scale ลง 5% สำหรับ Chrome/Edge ให้พอดีหน้า */
}
.page {
width: 100%;
margin: 0;
padding: 5mm 8mm; /* ลดขอบกระดาษตอนพิมพ์ลงเพื่อเพิ่มพื้นที่แนวตั้ง */
box-shadow: none;
border: none;
page-break-inside: avoid;
page-break-after: always;
}
.no-print { display: none !important; }
@page { size: A4; margin: 0; }
}
</style>
</head>
<body class="py-4 font-sans print:py-0">
<div class="fixed top-4 right-4 no-print flex space-x-2 z-50">
<button onclick="window.close()" class="px-4 py-2 bg-slate-200 hover:bg-slate-300 rounded-lg text-sm font-medium">ปิด</button>
<button onclick="window.print()" class="px-4 py-2 bg-indigo-600 hover:bg-indigo-700 text-white rounded-lg text-sm font-medium shadow flex items-center">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-4 h-4 mr-2"><path stroke-linecap="round" stroke-linejoin="round" d="M6.72 13.829c-.24.03-.48.062-.72.096m.72-.096a42.415 42.415 0 0 1 10.56 0m-10.56 0L6.34 18m10.94-4.171c.24.03.48.062.72.096m-.72-.096L17.66 18m0 0 .229 2.523a1.125 1.125 0 0 1-1.12 1.227H7.231c-.662 0-1.18-.568-1.12-1.227L6.34 18m11.318 0h1.091A2.25 2.25 0 0 0 21 15.75V9.456c0-1.081-.768-2.015-1.837-2.175a48.055 48.055 0 0 0-1.913-.247M6.34 18H5.25A2.25 2.25 0 0 1 3 15.75V9.456c0-1.081.768-2.015 1.837-2.175a48.041 48.041 0 0 1 1.913-.247m10.5 0a48.536 48.536 0 0 0-10.5 0m10.5 0V3.375c0-.621-.504-1.125-1.125-1.125h-8.25c-.621 0-1.125.504-1.125 1.125v3.659M18 10.5h.008v.008H18V10.5Zm-3 0h.008v.008H15V10.5Z" /></svg>
พิมพ์เอกสาร
</button>
</div>
<!-- START PAGE LOOP -->
<?php
$currentLetter = '';
foreach ($bulkData as $data):
$hrData = $data['hrData'];
$yearlySummary = $data['yearlySummary'];
$nationalId = $data['nationalId'];
$totalIncome = $yearlySummary['total_income'] ?? 0;
$totalTaxable = $yearlySummary['total_taxable_income'] ?? 0;
$totalTax = $yearlySummary['total_tax'] ?? 0;
$totalSsf = $yearlySummary['total_ssf'] ?? 0;
$totalKhbk = $yearlySummary['total_khbk'] ?? 0;
if ($totalTaxable == 0 && $totalIncome > 0) {
$totalTaxable = $totalIncome;
}
$fmtTaxable = $totalTaxable > 0 ? number_format($totalTaxable, 2) : '-';
$fmtTax = $totalTax > 0 ? number_format($totalTax, 2) : '-';
$fmtTaxableStr = bahtText($totalTaxable);
$fmtTaxStr = bahtText($totalTax);
// Handle Cover Page if Group By Letter is enabled
if (isset($groupByLetter) && $groupByLetter) {
$fname = trim($hrData['HR_FNAME'] ?? '');
if ($fname !== '') {
$firstLetter = mb_substr($fname, 0, 1, 'UTF-8');
if ($firstLetter !== $currentLetter) {
$currentLetter = $firstLetter;
?>
<div class="page flex items-center justify-center relative">
<div class="text-[250pt] font-bold text-slate-800 leading-none">
<?= htmlspecialchars($currentLetter) ?>
</div>
</div>
<?php
}
}
}
?>
<div class="page compact-text relative">
<!-- Header -->
<div class="flex justify-between items-start mb-1">
<div class="w-1/4">
<!-- ฉบับที่ is usually inside the form box or top left, standard form has it inside -->
</div>
<div class="w-2/4 text-center">
<h1 class="text-xl font-bold mb-0">หนังสือรับรองการหักภาษี ณ ที่จ่าย</h1>
<p class="font-bold">ตามมาตรา 50 ทวิ แห่งประมวลรัษฎากร</p>
</div>
<div class="w-1/4 text-right text-[9pt] text-slate-700 pt-2">
<div class="flex justify-end items-end mb-1">
<span class="mr-1">เล่มที่</span> <span class="inline-block w-20 border-b border-dotted border-slate-400"></span>
</div>
<div class="flex justify-end items-end">
<span class="mr-1">เลขที่</span> <span class="inline-block w-20 border-b border-dotted border-slate-400"></span>
</div>
</div>
</div>
<div class="flex justify-between text-xs mb-1">
<div>
ฉบับที่ 1 (สำหรับผู้ถูกหักภาษี ณ ที่จ่าย ใช้แนบพร้อมกับแบบแสดงรายการภาษี)<br>
ฉบับที่ 2 (สำหรับผู้ถูกหักภาษี ณ ที่จ่าย เก็บไว้เป็นหลักฐาน)
</div>
</div>
<!-- Main Outer Box -->
<div class="form-border w-full">
<!-- Payer Section -->
<div class="p-1 pb-1">
<div class="flex justify-between items-center mb-1">
<b>ผู้มีหน้าที่หักภาษี ณ ที่จ่าย :</b>
<div class="flex items-center pr-2">
<span class="mr-2">เลขประจำตัวผู้เสียภาษีอากร (13 หลัก)*</span>
<div class="char-box">
<?php
$orgId = str_replace('-', '', $orgTaxId ?? '');
$orgId = str_pad($orgId, 13, ' ', STR_PAD_RIGHT);
for ($i = 0; $i < 13; $i++) {
echo "<span>" . htmlspecialchars($orgId[$i]) . "</span>";
if (in_array($i, [0, 4, 9, 11])) echo "<div class='gap'></div>";
}
?>
</div>
</div>
</div>
<div class="flex items-end mt-1">
<b class="w-10">ชื่อ</b>
<div class="border-b border-dotted border-black flex-grow text-[11pt] px-4 text-left">โรงพยาบาลเกาะสมุย</div>
</div>
<div class="small-text font-normal text-slate-600 ml-10 leading-tight">(ให้ระบุว่าเป็น บุคคล นิติบุคคล บริษัท สมาคม หรือคณะบุคคล)</div>
<div class="flex items-end mt-1">
<b class="w-10">ที่อยู่</b>
<div class="border-b border-dotted border-black flex-grow text-[11pt] px-4 text-left"><?= htmlspecialchars($orgAddress ?? 'ต.อ่างทอง อ.เกาะสมุย จ.สุราษฎร์ธานี 84140') ?></div>
</div>
<div class="small-text font-normal text-slate-600 ml-10 leading-tight mb-1">(ให้ระบุชื่ออาคาร/หมู่บ้าน ห้องเลขที่ ชั้นที่ เลขที่ ตรอก/ซอย หมู่ที่ ถนน ตำบล/แขวง อำเภอ/เขต จังหวัด)</div>
</div>
<!-- Payee Section -->
<div class="p-1 pb-1 border-t border-black">
<div class="flex justify-between items-center mb-1">
<b>ผู้ถูกหักภาษี ณ ที่จ่าย :</b>
<div class="flex items-center pr-2">
<span class="mr-2">เลขประจำตัวผู้เสียภาษีอากร (13 หลัก)*</span>
<div class="char-box">
<?php
$nid = str_replace('-', '', $nationalId ?? '');
$nid = str_pad($nid, 13, ' ', STR_PAD_RIGHT);
for ($i = 0; $i < 13; $i++) {
echo "<span>" . htmlspecialchars($nid[$i]) . "</span>";
if (in_array($i, [0, 4, 9, 11])) echo "<div class='gap'></div>";
}
?>
</div>
</div>
</div>
<div class="flex items-end mt-1">
<b class="w-10">ชื่อ</b>
<div class="border-b border-dotted border-black flex-grow text-[11pt] px-4 text-left"><?= htmlspecialchars($hrData['HR_PREFIX_NAME'] ?? '') ?><?= htmlspecialchars($hrData['HR_FNAME'] ?? '') ?> <?= htmlspecialchars($hrData['HR_LNAME'] ?? '') ?></div>
</div>
<div class="small-text font-normal text-slate-600 ml-10 leading-tight">(ให้ระบุว่าเป็น บุคคล นิติบุคคล บริษัท สมาคม หรือคณะบุคคล)</div>
<div class="flex items-end mt-1">
<b class="w-10">ที่อยู่</b>
<div class="border-b border-dotted border-black flex-grow text-[11pt] px-4 text-left"><?= htmlspecialchars($taxPayeeAddress ?? 'ต.อ่างทอง อ.เกาะสมุย จ.สุราษฎร์ธานี 84140') ?></div>
</div>
<div class="small-text font-normal text-slate-600 ml-10 leading-tight mb-1">(ให้ระบุชื่ออาคาร/หมู่บ้าน ห้องเลขที่ ชั้นที่ เลขที่ ตรอก/ซอย หมู่ที่ ถนน ตำบล/แขวง อำเภอ/เขต จังหวัด)</div>
</div>
<!-- Form Type Checkboxes -->
<div class="p-1 border-t border-black text-[10pt]">
<div class="flex items-start">
<div class="flex items-end mr-4 shrink-0 pb-1">
<b class="mr-1">ลำดับที่</b>
<span class="border-b border-dotted border-black inline-block w-12 text-center translate-y-[-2px]"></span>
<span class="ml-4">ในแบบ</span>
</div>
<div class="flex flex-wrap items-center flex-1">
<div class="flex items-center mr-4 mb-1"><span class="checkbox checked mr-1 ml-0"></span> (1) ภ.ง.ด.1ก</div>
<div class="flex items-center mr-4 mb-1"><span class="checkbox mr-1 ml-0"></span> (2) ภ.ง.ด.1ก พิเศษ</div>
<div class="flex items-center mr-4 mb-1"><span class="checkbox mr-1 ml-0"></span> (3) ภ.ง.ด.2</div>
<div class="flex items-center mr-4 mb-1"><span class="checkbox mr-1 ml-0"></span> (4) ภ.ง.ด.3</div>
<div class="flex items-center mr-4 mb-1"><span class="checkbox mr-1 ml-0"></span> (5) ภ.ง.ด.2ก</div>
<div class="flex items-center mr-4 mb-1"><span class="checkbox mr-1 ml-0"></span> (6) ภ.ง.ด.3ก</div>
<div class="flex items-center mr-4 mb-1"><span class="checkbox mr-1 ml-0"></span> (7) ภ.ง.ด.53</div>
</div>
</div>
<div class="small-text text-slate-600 mt-1 leading-tight">
(ให้สามารถอ้างอิงหรือสอบยันกันได้ระหว่างลำดับที่ตามหนังสือรับรองฯ กับแบบยื่นรายการภาษีหักที่จ่าย)
</div>
</div>
<!-- Table -->
<table class="data-table border-t border-black text-[10pt] w-full border-b-0 border-l-0 border-r-0">
<thead class="text-center font-bold align-middle bg-white">
<tr>
<th class="w-[60%] border-l-0 border-t-0 border-b-black py-2">ประเภทเงินได้พึงประเมินที่จ่าย</th>
<th class="w-[12%] border-t-0 border-b-black py-2">วัน เดือน<br>หรือปีภาษี ที่จ่าย</th>
<th class="w-[14%] border-t-0 border-b-black py-2">จำนวนเงินที่จ่าย</th>
<th class="w-[14%] border-r-0 border-t-0 border-b-black py-2">ภาษีที่หัก<br>และนำส่งไว้</th>
</tr>
</thead>
<tbody>
<tr>
<td class="border-l-0">1. เงินเดือน ค่าจ้าง เบี้ยเลี้ยง โบนัส ฯลฯ ตามมาตรา 40 (1)</td>
<td class="text-center">ปี <?= $thaiYear ?></td>
<td class="text-right"><?= $fmtTaxable ?></td>
<td class="text-right border-r-0"><?= $fmtTax ?></td>
</tr>
<tr>
<td class="border-l-0">2. ค่าธรรมเนียม ค่านายหน้า ฯลฯ ตามมาตรา 40 (2)</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0">3. ค่าแห่งลิขสิทธิ์ ฯลฯ ตามมาตรา 40 (3)</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0">4. (ก) ดอกเบี้ย ฯลฯ ตามมาตรา 40 (4) (ก)</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-4">(ข) เงินปันผล เงินส่วนแบ่งกำไร ฯลฯ ตามมาตรา 40 (4) (ข)</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-8">(1) กรณีผู้ได้รับเงินปันผลได้รับเครดิตภาษี โดยจ่ายจาก<br>
&nbsp;&nbsp;&nbsp;&nbsp;กำไรสุทธิของกิจการที่ต้องเสียภาษีเงินได้นิติบุคคลในอัตราดังนี้
</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-10">(1.1) อัตราร้อยละ 30 ของกำไรสุทธิ</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-10">(1.2) อัตราร้อยละ 25 ของกำไรสุทธิ</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-10">(1.3) อัตราร้อยละ 20 ของกำไรสุทธิ</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-10">(1.4) อัตราอื่น ๆ (ระบุ)........................... ของกำไรสุทธิ</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-8">(2) กรณีผู้ได้รับเงินปันผลไม่ได้รับเครดิตภาษี เนื่องจากจ่ายจาก</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-10">(2.1) กำไรสุทธิของกิจการที่ได้รับยกเว้นภาษีเงินได้นิติบุคคล</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-10">(2.2) เงินปันผลหรือเงินส่วนแบ่งของกำไรที่ได้รับยกเว้นไม่ต้องนำมารวม<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;คำนวณเป็นรายได้เพื่อเสียภาษีเงินได้นิติบุคคล
</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-10">(2.3) กำไรสุทธิส่วนที่ได้หักผลขาดทุนสุทธิยกมาไม่เกิน 5 ปี<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ก่อนรอบระยะเวลาบัญชีปีปัจจุบัน
</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-10">(2.4) กำไรที่รับรู้ทางบัญชีโดยวิธีส่วนได้เสีย (equity method)</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0 pl-10">(2.5) อื่น ๆ (ระบุ)..................................................................................</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0">
5. การจ่ายเงินได้ที่ต้องหักภาษี ณ ที่จ่าย ตามคำสั่งกรมสรรพากรที่ออกตามมาตรา<br>
&nbsp;&nbsp;&nbsp;3 เตส เช่น รางวัล ส่วนลดหรือประโยชน์ใด ๆ เนื่องจากการส่งเสริมการขาย รางวัล<br>
&nbsp;&nbsp;&nbsp;ในการประกวด การแข่งขัน การชิงโชค ค่าแสดงของนักแสดงสาธารณะ ค่าจ้าง<br>
&nbsp;&nbsp;&nbsp;ทำของ ค่าโฆษณา ค่าเช่า ค่าขนส่ง ค่าบริการ ค่าเบี้ยประกันวินาศภัย ฯลฯ
</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr>
<td class="border-l-0">6. อื่น ๆ (ระบุ)....................................................................................................................</td>
<td class="text-center"></td>
<td class="text-right"></td>
<td class="text-right border-r-0"></td>
</tr>
<tr class="font-bold">
<td colspan="2" class="text-center border-l-0">รวมเงินที่จ่ายและภาษีที่หักนำส่ง</td>
<td class="text-right"><?= $fmtTaxable ?></td>
<td class="text-right border-r-0"><?= $fmtTax ?></td>
</tr>
<tr>
<td colspan="4" class="border-l-0 border-r-0 pb-1 pt-1">
รวมเงินที่จ่าย (ตัวอักษร) <span class="inline-block border-b border-dotted border-black w-[80%] text-center pl-2">&nbsp;&nbsp;( <?= htmlspecialchars($fmtTaxableStr) ?> )</span>
</td>
</tr>
<tr>
<td colspan="4" class="border-l-0 border-r-0 pb-1 pt-1 border-t-0">
รวมเงินภาษีที่หักนำส่ง (ตัวอักษร) <span class="inline-block border-b border-dotted border-black w-[80%] text-center pl-2">&nbsp;&nbsp;( <?= htmlspecialchars($fmtTaxStr) ?> )</span>
</td>
</tr>
</tbody>
</table>
<!-- Funds Section -->
<div class="p-1 border-t border-black text-[10pt] flex items-center justify-between">
<span>เงินที่จ่ายเข้า กบข./กสจ./กองทุนสงเคราะห์ครูโรงเรียนเอกชน <span class="border-b border-dotted border-black inline-block w-24 text-center"><?= number_format($totalKhbk, 2) ?></span> บาท</span>
<span>กองทุนประกันสังคม <span class="border-b border-dotted border-black inline-block w-24 text-center"><?= number_format($totalSsf, 2) ?></span> บาท</span>
<span>กองทุนสำรองเลี้ยงชีพ <span class="border-b border-dotted border-black inline-block w-24 text-center"></span> บาท</span>
</div>
<!-- Condition Section -->
<div class="p-1 border-t border-black text-[10pt] flex items-center bg-slate-100/50 whitespace-nowrap overflow-hidden">
<b class="mr-4">ผู้จ่ายเงิน</b>
<span class="checkbox checked"></span> (1) หัก ณ ที่จ่าย
<span class="checkbox ml-3"></span> (2) ออกให้ตลอดไป
<span class="checkbox ml-3"></span> (3) ออกให้ครั้งเดียว
<span class="checkbox ml-3"></span> (4) อื่น ๆ (ระบุ)<span class="inline-block border-b border-dotted w-16 ml-1"></span>
</div>
<!-- Signature Section -->
<div class="flex border-t border-black min-h-[100px]">
<!-- Warning Text -->
<div class="w-[35%] p-2 border-r border-black text-[10pt]">
<b>คำเตือน</b> ผู้มีหน้าที่ออกหนังสือรับรองการหักภาษี ณ ที่จ่าย<br>
<span class="pl-10">ฝ่าฝืนไม่ปฏิบัติตามมาตรา 50 ทวิ แห่งประมวล<br></span>
<span class="pl-10">รัษฎากร ต้องรับโทษทางอาญาตามมาตรา 35<br></span>
<span class="pl-10">แห่งประมวลรัษฎากร</span>
</div>
<!-- Signature Area -->
<div class="w-[65%] p-2 relative text-center text-[10pt]">
<p class="mb-4">ขอรับรองว่าข้อความและตัวเลขดังกล่าวข้างต้นถูกต้องตรงกับความจริงทุกประการ</p>
<?php if ($hasSignature): ?>
<div class="absolute inset-0 flex justify-center items-center pointer-events-none mt-4">
<?php if (file_exists(APP_ROOT . '/public/img/tax_signature.png')): ?>
<img src="<?= BASE_URL ?>/public/img/tax_signature.png?t=<?= time() ?>"
class="mix-blend-multiply dark:mix-blend-normal z-10"
style="width: <?= $sigWidth ?>px; transform: translate(<?= $sigPosX ?>px, <?= $sigPosY ?>px);"
alt="Signature">
<?php endif; ?>
</div>
<?php endif; ?>
<div class="flex justify-center items-end mt-8 relative z-20">
<span class="mr-2">ลงชื่อ</span>
<div class="border-b border-dotted border-black w-64 text-center"></div>
<span class="ml-2">ผู้จ่ายเงิน</span>
<!-- Seal Circle Placeholder -->
<div class="absolute right-4 bottom-0 w-16 h-16 rounded-full border border-black flex items-center justify-center text-[8pt] text-center leading-tight">
ประทับตรา<br>นิติบุคคล<br>(ถ้ามี)
</div>
</div>
<div class="mt-1 relative z-20"><span class="font-semibold text-sky-800 dark:text-sky-300 print-text-black"><?= htmlspecialchars($taxSignatureName ?: '......................................................') ?></span></div>
<div class="mt-1 flex justify-center items-center gap-1 relative z-20">
<span>(วัน เดือน ปี ที่ออกหนังสือรับรองฯ)</span>
</div>
<div class="mt-1 flex justify-center items-center gap-1 relative z-20">
<span class="w-10 border-b border-dotted border-black inline-block text-center"><?= $printDay ?></span>
<span>/</span>
<span class="w-24 border-b border-dotted border-black inline-block text-center"><?= $printMonth ?></span>
<span>/</span>
<span class="w-14 border-b border-dotted border-black inline-block text-center"><?= $printYear ?></span>
</div>
</div>
</div>
</div>
<!-- Footer Note -->
<div class="text-[9pt] mt-1">
<b>หมายเหตุ</b> เลขประจำตัวผู้เสียภาษีอากร (13 หลัก)* หมายถึง
1. กรณีบุคคลธรรมดาไทย ให้ใช้เลขประจำตัวประชาชนของกรมการปกครอง<br>
<span class="pl-[200px]">2. กรณีนิติบุคคล ให้ใช้เลขทะเบียนนิติบุคคลของกรมพัฒนาธุรกิจการค้า</span><br>
<span class="pl-[200px]">3. กรณีอื่นๆ นอกเหนือจาก 1. และ 2. ให้ใช้เลขประจำตัวผู้เสียภาษีอากร (13 หลัก) ของกรมสรรพากร</span>
</div>
</div>
<?php endforeach; ?>
</body>
</html>