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,162 @@
<?php
namespace app\Controllers;
use app\Models\PayrollModel;
use app\Models\HrPersonModel;
use app\Models\UserLogModel;
use app\Models\SystemSettingModel;
class KioskController extends Controller {
public function index() {
// Load the Kiosk UI
$this->view('kiosk/index');
}
public function search() {
header('Content-Type: application/json');
$nationalId = $_POST['national_id'] ?? null;
if (!$nationalId || strlen($nationalId) !== 13) {
echo json_encode(['status' => 'error', 'message' => 'รหัสบัตรประชาชนไม่ถูกต้อง']);
return;
}
$payrollModel = new PayrollModel();
$hrModel = new HrPersonModel();
// Check if person exists in HR DB
$person = $hrModel->getPersonByNationalId($nationalId);
$slips = $payrollModel->getAvailableSlipsByNationalId($nationalId);
$taxes = $payrollModel->getAvailableTaxesByNationalId($nationalId);
if (empty($slips) && empty($taxes)) {
echo json_encode(['status' => 'error', 'message' => 'ไม่พบข้อมูลเงินเดือนหรือใบเสียภาษีสำหรับรหัสบัตรประชาชนนี้']);
return;
}
$personName = $person ? trim($person['hr_fname'] . ' ' . $person['hr_lname']) : 'ไม่ทราบชื่อ';
echo json_encode([
'status' => 'success',
'data' => [
'name' => $personName,
'slips' => $slips,
'taxes' => $taxes
]
]);
}
public function printSlip() {
$nationalId = $_GET['national_id'] ?? null;
$month = $_GET['month'] ?? null;
$year = $_GET['year'] ?? null;
if (!$nationalId || !$month || !$year) {
die('ข้อมูลไม่ครบถ้วน');
}
$payrollModel = new PayrollModel();
$salary = $payrollModel->getSalaryByNationalId($nationalId, $month, $year);
if (!$salary) {
die('ไม่พบข้อมูลเงินเดือนของบุคคลนี้ในงวดที่เลือก');
}
// Log the action (null user_id)
$logModel = new UserLogModel();
$logModel->logAction(null, 'KIOSK_PRINT_SLIP', "ตู้ Kiosk: พิมพ์สลิปเงินเดือน งวด $month/$year สำหรับบัตรประชาชน $nationalId");
$incomes = $payrollModel->getEmployeeIncomes($salary['id']);
$deductions = $payrollModel->getEmployeeDeductions($salary['id']);
$hrModel = new HrPersonModel();
$hrData = $hrModel->getPersonByNationalId($nationalId);
if (!$hrData) {
$hrData = [];
}
require_once APP_ROOT . '/app/Views/reports/slip.php';
}
public function printSlipBulk() {
$nationalId = $_POST['national_id'] ?? null;
$periods = $_POST['periods'] ?? []; // format: 'MM-YYYY'
if (!$nationalId || empty($periods)) {
die('ข้อมูลไม่ครบถ้วน');
}
$payrollModel = new PayrollModel();
$hrModel = new HrPersonModel();
$hrData = $hrModel->getPersonByNationalId($nationalId);
if (!$hrData) {
$hrData = [];
}
$bankProfile = [
'bank_account_no' => $hrData['HR_BANK_ACCOUNT'] ?? '',
'bank_name' => '' // Not provided in HR data directly without another query
];
$bulkData = [];
foreach ($periods as $period) {
list($month, $year) = explode('-', $period);
$salary = $payrollModel->getSalaryByNationalId($nationalId, $month, $year);
if ($salary) {
$bulkData[] = [
'salary' => $salary,
'hrData' => $hrData,
'bankProfile' => $bankProfile,
'incomes' => $payrollModel->getEmployeeIncomes($salary['id']),
'deductions' => $payrollModel->getEmployeeDeductions($salary['id']),
'month' => $month,
'year' => $year
];
}
}
if (empty($bulkData)) {
die('ไม่พบข้อมูลเงินเดือนสำหรับช่วงที่เลือก');
}
// Log the action
$logModel = new UserLogModel();
$logModel->logAction(null, 'KIOSK_PRINT_SLIP', "ตู้ Kiosk: พิมพ์สลิปเงินเดือนแบบกลุ่ม (" . count($periods) . " เดือน) สำหรับบัตรประชาชน $nationalId");
require_once APP_ROOT . '/app/Views/kiosk/slip_bulk.php';
}
public function printTax() {
$nationalId = $_GET['national_id'] ?? null;
$year = $_GET['year'] ?? null;
if (!$nationalId || !$year) {
die('ข้อมูลไม่ครบถ้วน');
}
$payrollModel = new PayrollModel();
$yearlySummary = $payrollModel->getYearlyTaxSummary($nationalId, $year);
if (!$yearlySummary || $yearlySummary['total_income'] == 0) {
die('ไม่พบข้อมูลรายได้ในปีที่เลือก');
}
// Log the action
$logModel = new UserLogModel();
$logModel->logAction(null, 'KIOSK_PRINT_TAX', "ตู้ Kiosk: พิมพ์ใบ 50 ทวิ ปี $year สำหรับบัตรประชาชน $nationalId");
$hrModel = new HrPersonModel();
$hrData = $hrModel->getPersonByNationalId($nationalId);
if (!$hrData) {
$hrData = [];
}
$settingModel = new SystemSettingModel();
$orgTaxId = $settingModel->getSetting('org_tax_id', '');
require_once APP_ROOT . '/app/Views/reports/tax.php';
}
}
?>