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'; } } ?>