ProBookingCenter — เอกสารอธิบายระบบ#
ระบบจัดการการจองและทัวร์สำหรับองค์กร
Version: 29.07.2023 | Framework: Laravel 8 | PHP ^7.3 / ^8.0
สารบัญ#
1. ภาพรวมระบบ#
ProBookingCenter คือระบบบริหารจัดการการจองทัวร์และแพ็กเกจท่องเที่ยวสำหรับองค์กร ครอบคลุมทุกขั้นตอนตั้งแต่การจอง ชำระเงิน ออกใบแจ้งหนี้ ไปจนถึงการสร้างรายงานและเอกสารฟีเจอร์หลัก#
| ฟีเจอร์ | คำอธิบาย |
|---|
| Tour Management | สร้างและจัดการทัวร์ ซีรีส์ และรอบเดินทาง |
| Booking System | ระบบจองแบบ multi-step พร้อมติดตามสถานะ |
| Payment Processing | รับชำระมัดจำ/เต็มจำนวน มีขั้นตอนอนุมัติ |
| Invoicing | ออกใบแจ้งหนี้ / ใบเสร็จ รูปแบบ PDF และ Excel |
| Reports | รายงานต้นทุน รายได้ เอเจนซี่ ค่าคอมมิชชัน |
| Document Export | แท็กตรวจคนเข้าเมือง รายชื่อห้อง รายชื่อผู้โดยสาร |
| Agency Management | จัดการเอเจนซี่ Credit Shell และการยืนยันบริษัท |
| Incentive Programs | ระบบใบเสนอราคาสำหรับ Incentive Travel |
| Seat Management | จัดการความจุรถบัสและล็อกที่นั่ง |
| Email Notifications | ส่งอีเมลอัตโนมัติเมื่อจอง/ชำระเงิน |
| Passport & Visa | ติดตามเอกสารหนังสือเดินทางและวีซ่า |
| 2FA Security | ระบบยืนยันตัวตนสองขั้นตอน |
2. Tech Stack#
Backend#
| ส่วนประกอบ | เทคโนโลยี |
|---|
| Framework | Laravel 8 |
| Language | PHP ^7.3 / ^8.0 |
| Database | MySQL (Multi-database) |
| Authentication | JWT (Firebase/Tymon), Laravel Fortify, Laravel Sanctum |
| Queue | Database Queue |
| Cache | Database Cache |
Frontend#
| ส่วนประกอบ | เทคโนโลยี |
|---|
| Framework | Vue.js 2.6.12 |
| CSS Framework | Bootstrap 5.1.3 + Tailwind CSS 3.4.9 |
| Build Tool | Laravel Mix 6.0.49 |
| Charts | ApexCharts, Chart.js |
| Utilities | jQuery, Lodash, Moment.js |
| Date Picker | Date-range-picker 3.1 |
| Alerts | Sweetalert2 |
| i18n | Vue-i18n |
Document Generation#
| ไลบรารี | ใช้สำหรับ |
|---|
| DOMPDF + mPDF | สร้าง PDF จาก HTML |
| PHPSpreadsheet 1.29 | ไฟล์ Excel (.xlsx) |
| PHPWord 1.2 | ไฟล์ Word (.docx) |
| FPDF/FPDI | PDF แบบ Advanced |
| Maatwebsite Excel 3.1 | Export/Import Excel |
| QR Code (Endroid) | สร้าง QR Code |
3. สถาปัตยกรรมระบบ#
Multi-Database Architecture#
ระบบใช้การเชื่อมต่อฐานข้อมูลหลายตัวพร้อมกัน โดยแต่ละ database รับผิดชอบข้อมูลคนละส่วน:┌─────────────────────────────────────────────────────────┐
│ ProBookingCenter │
│ Laravel Application │
└──────────┬──────────┬──────────┬───────────┬────────────┘
│ │ │ │
┌─────▼──┐ ┌────▼───┐ ┌───▼────┐ ┌───▼──────┐
│ center │ │incentive│ │ ticket │ │ reports │
│ (main)│ │ DB │ │ DB │ │(read-only│
└─────┬──┘ └────────┘ └────────┘ └──────────┘
│
┌─────▼──────┐
│ sync_api │ ← External API sync
│ website │ ← Website/Portal
└────────────┘
| Database | ชื่อตัวแปร ENV | หน้าที่ |
|---|
center | CENTER_DB_* | ฐานข้อมูลหลัก (User, Booking, Agency, Tour) |
incentive | INCENTIVE_DB_* | ใบเสนอราคาและชำระเงิน Incentive |
ticket | TICKET_DB_* | ระบบจัดการตั๋ว |
reports | REPORT_DB_* | ฐานข้อมูลรายงาน (อ่านอย่างเดียว) |
sync_api | SYNC_API_DB_* | Sync กับ External API |
website | WEBSITE_DB_* | ข้อมูล Website/Portal |
Request Flow#
Browser/Client
│
▼
Nginx/Apache
│
▼
public/index.php ← Entry point
│
▼
Middleware Stack
├── auth (JWT/Session)
├── role-based (operation, payment, admin...)
└── two-factor.confirmed
│
▼
Controller → Service/Helper → Model → Database
│
▼
Response (JSON / Blade View / PDF / Excel)
4. โครงสร้างฐานข้อมูล#
กลุ่ม Models หลัก#
Users & Access Control#
users ← ข้อมูลผู้ใช้งาน
roles ← บทบาท (Admin, Operation, Payment...)
user_role_permits ← สิทธิ์แต่ละ Role
Agency (เอเจนซี่)#
agencies ← ข้อมูลเอเจนซี่
agency_companies ← บริษัทในเอเจนซี่
agency_credit_shells ← Credit Shell
agency_verifications ← การยืนยัน
Tour (ทัวร์)#
tour_series ← ซีรีส์ทัวร์
tour_periods ← รอบเดินทาง
tour_buses ← รถบัส
tour_bookings ← การจองของทัวร์
tour_cities ← เมืองในทัวร์
tour_countries ← ประเทศ
Booking (การจอง)#
bookings ← การจองหลัก
booking_details ← รายละเอี ยดผู้โดยสาร
booking_activities ← Activity log
booking_logs ← Log การเปลี่ยนแปลง
booking_refunds ← การคืนเงิน
booking_guarantees ← การค้ำประกัน
Payment (การชำระเงิน)#
payments ← การชำระเงิน
tour_payments ← การชำระรายทัวร์
receipt_temporaries ← ใบเสร็จชั่วคราว
receipts ← ใบเสร็จจริง
Invoice (ใบแจ้งหนี้)#
invoices ← ใบแจ้งหนี้
invoice_details ← รายการในใบแจ้งหนี้
invoice_requests ← คำขอใบแจ้งหนี้
invoice_reports ← รายงานใบแจ้งหนี้
Period & Cost (รอบ/ต้นทุน)#
periods ← รอบเดินทาง
cost_seats ← ต้นทุนต่อที่นั่ง
cost_seat_averages ← ต้นทุนเฉลี่ย
estimates ← ประมาณการ
estimate_details ← รายละเอียดประมาณการ
Location (สถานที่)#
countries ← ประเทศ
location_cities ← เมือง
provinces ← จังหวัด
districts ← อำเภอ
Approval (การอนุมัติ)#
approves ← การอนุมัติ
approve_requests ← คำขออนุมัติ
approve_details ← รายละเอียดการอนุมัติ
5. โมดูลหลักของระบบ#
5.1 Dashboard#
แสดงสถิติสรุปการจองและรายได้
Quick links สำหรับแต่ละ Role
5.2 Tour Management#
สร้าง/แก้ไข Tour Series และ Tour Period
จัดการรถบัสและความจุที่นั่ง
5.3 Booking System#
กรอกข้อมูลผู้โดยสาร (หนังสือเดินทาง, วีซ่า)
5.4 Payment Processing#
สแกนสลิปการชำระเงิน (BotScanSlip)
ขั้นตอนการอนุมัติการชำระเงิน
5.5 Invoice & Receipt#
ใบแจ้งหนี้แบบ CNX (Chiang Mai), Full, Deposit
5.6 Reports#
รายงานการจอง (Booking Report)
รายงานต้นทุน (Costing Report)
รายงานรายได้ (Income Report)
รายงานเอเจนซี่และคอมมิชชัน
5.7 Document Export#
แท็กตรวจคนเข้าเมือง (Immigration Tags)
รายชื่อห้องพัก (Room List)
รายชื่อผู้โดยสาร (Passenger List)
5.8 Agency Management#
ข้อมูลเอเจนซี่และบริษัทในเครือ
5.9 Incentive Travel#
สร้างใบเสนอราคา Incentive
จัดการการชำระเงิน Incentive
6. สถานะการจอง#
จอง (New)
│
▼
┌──────────────┐
│ WAITING (5) │ ← รอดำเนินการ / Waitlist
└──────┬───────┘
│
▼
┌──────────────────┐
│ INVOICE (10) │ ← ออกใบแจ้งหนี้แล้ว
└──────┬───────────┘
│
▼
┌────────────────────────┐
│ DEPOSIT_PART (20) │ ← ชำระมัดจำบางส่วน
└──────┬─────────────────┘
│
▼
┌────────────────────────┐
│ DEPOSIT_FULL (25) │ ← ชำระมัดจำครบ
└──────┬─────────────────┘
│
▼
┌────────────────────────┐
│ FULL_PART (30) │ ← ชำระส่วนที่เหลือบางส่วน
└──────┬─────────────────┘
│
▼
┌────────────────────────┐
│ FULL_PAY (35) │ ← ชำระเต็มจำนวนแล้ว
└──────┬─────────────────┘
│
▼
┌────────────────────────┐
│ PAY (55) │ ← ชำระเงินสมบูรณ์
└────────────────────────┘
หรือ → CANCEL (40) ← ยกเลิก (ได้ทุกสถานะ)
7. ระบบ Authentication & Authorization#
วิธีการ Login#
Standard username/password
Laravel Sanctum สำหรับ SPA
Two-Factor Authentication (2FA) รองรับ
Roles และสิทธิ์#
| Role | สิทธิ์หลัก |
|---|
admin | จัดการ User, ตั้งค่าระบบ |
operation | จัดการทัวร์, การจอง |
payment | อนุมัติการชำระเงิน |
sales | ดูรายงานการขาย |
ticket | จัดการตั๋ว |
event | จัดการ Event |
settings | ตั้งค่าระบบ |
Middleware#
8. API Endpoints#
Authentication#
POST /api/login → เข้าสู่ระบบ
POST /api/logout → ออกจากระบบ
Booking#
GET /api/bookings → รายการการจอง
POST /api/bookings → สร้างการจอง
GET /api/bookings/{id} → รายละเอียดการจ อง
Payment#
POST /api/payment/approve → อนุมัติการชำระเงิน
GET /api/payment/{id} → ข้อมูลการชำระเงิน
Tour & Series#
GET /api/series → รายการทัวร์ซีรีส์
GET /api/series/{id}/periods → รอบเดินทาง
Location#
GET /api/location/province/{id} → จังหวัด
GET /api/location/district/{id} → อำเภอ
Agency#
GET /api/company → รายชื่อบริษัท
GET /api/agency/{id}/company → บริษัทในเอเจนซี่
Quotation#
POST /api/quotation/store → สร้างใบเสนอราคา
GET /api/quotation/{id} → ดูใบเสนอราคา
Email Notifications#
GET /api/mails/booking/create/{id} → ส่งยืนยันการจอง
GET /api/mails/booking/payment/{id} → ส่งแจ้งการชำระเงิน
Visa#
POST /api/visa → บันทึกข้อมูลวีซ่า EU
9. การสร้างเอกสาร#
ประเภทเอกสารที่ระบบสร้างได้#
| เอกสาร | Format | ไลบรารี |
|---|
| ใบแจ้งหนี้ (Invoice) | PDF, Excel | DOMPDF, PHPSpreadsheet |
| ใบเสร็จรับเงิน (Receipt) | PDF | mPDF |
| รายชื่อผู้โดยสาร | Excel, PDF | PHPSpreadsheet |
| รายชื่อห้องพัก | Excel | PHPSpreadsheet |
| Immigration Tags | PDF | FPDF |
| ใบเสนอราคา Incentive | PDF, Word | DOMPDF, PHPWord |
| รายงานต่างๆ | Excel | Maatwebsite Excel |
Export Routes#
GET /export/booking/{id} → Export รายการจอง
GET /export/invoice/{id} → Export ใบแจ้งหนี้
GET /export/receipt/{id} → Export ใบเสร็จ
GET /export/passenger-list/{id} → Export รายชื่อผู้โดยสาร
GET /export/room-list/{id} → Export รายชื่อห้อง
GET /export/immigration-tag/{id} → Export แท็กตรวจคนเข้าเมือง
10. Background Jobs & Commands#
Artisan Commands (Scheduled Tasks)#
| Command | หน้าที่ | ตัวอย่าง |
|---|
BookingAutoCancel | ยกเลิกการจองที่เกินกำหนดอัตโนมัติ | รัน daily |
BotScanSlip | สแกนสลิปการชำระเงิน | รัน realtime |
MakeInvoiceFullPayments | สร้างใบแจ้งหนี้สำหรับการชำระเต็มจำนวน | รัน daily |
SendEmailsAfterApprovePayment | ส่งอีเมลหลังอนุมัติการชำระเงิน | trigger event |
SendEmailsAfterBooking | ส่งอีเมลยืนยันการจอง | trigger event |
SendMailInvoiceCNX/Full/Dep | ส่งอีเมลใบแจ้งหนี้ตามประเภท | trigger event |
UpdateBookingCnxTimeOut | อัปเดต timeout การจอง CNX | รัน periodic |
UpdateWistListBookingStatus | อัปเดตสถา นะ Waitlist | รัน daily |
SyncDataToApi | Sync ข้อมูลไปยัง External API | รัน periodic |
ClearCache | ล้าง Cache ของระบบ | รัน scheduled |
RegisterDompdfFont | ลงทะเบียน Font สำหรับ PDF | รัน once |
Queue Jobs (Async Processing)#
| Job | หน้าที่ |
|---|
ExportBooking | Export ข้อมูลการจองขนาดใหญ่ |
ExportBookingData | Export ข้อมูลสำหรับรายงาน |
| Report Generation Jobs | สร้างรายงานในพื้นหลัง |
11. Frontend (Vue.js SPA)#
โครงสร้าง Components#
resources/assets/admin/js/
├── app.js ← Entry point
├── router.js ← Vue Router
├── store/ ← Vuex State Management
└── components/
├── agency/ ← จัดการเอเจนซี่
│ ├── AgencyList.vue
│ ├── AgencyForm.vue
│ └── AgencyCredit.vue
├── booking/ ← ระบบจอง
│ ├── BookingList.vue
│ ├── BookingCreate.vue
│ └── BookingDetail.vue
├── checkout/ ← ขั้นตอนชำระเงิน
├── period/ ← จัดการรอบเดินทาง
├── quotation/ ← ใบเสนอราคา
├── payment/ ← การชำระเงิน
├── series/ ← Tour Series
├── ticket/ ← ตั๋ว
├── tour-booking/ ← การจองทัวร์
├── reports/ ← รายงาน
└── layout/ ← Header, Sidebar, Footer
Build & Assets#
Assets ถูก Compile ไปที่ /public/static/
12. Environment Variables#
ตัวแปรหลัก#
APP_NAME=ProBookingCenter
APP_VERSION=29.07.2023
APP_ENV=production # local | production
APP_DEBUG=false
APP_URL=https://your-domain.com
TIMEZONE=Asia/Bangkok
Database (Multi-Connection)#
# Default connection
DB_CONNECTION=mysql
# Center Database (หลัก)
CENTER_DB_HOST=127.0.0.1
CENTER_DB_PORT=3306
CENTER_DB_DATABASE=center_db
CENTER_DB_USERNAME=root
CENTER_DB_PASSWORD=
# Incentive Database
INCENTIVE_DB_HOST=127.0.0.1
INCENTIVE_DB_DATABASE=incentive_db
INCENTIVE_DB_USERNAME=root
INCENTIVE_DB_PASSWORD=
# Ticket Database
TICKET_DB_HOST=127.0.0.1
TICKET_DB_DATABASE=ticket_db
TICKET_DB_USERNAME=root
TICKET_DB_PASSWORD=
# Reports Database (Read-only)
REPORT_DB_HOST=127.0.0.1
REPORT_DB_DATABASE=reports_db
REPORT_DB_USERNAME=readonly_user
REPORT_DB_PASSWORD=
# Sync API Database
SYNC_API_DB_HOST=127.0.0.1
SYNC_API_DB_DATABASE=sync_api_db
Authentication#
APP_KEY=base64:<generated_key>
JWT_SECRET=<base64_encoded_secret>
TWO_FACTOR_LIFETIME=5 # อายุ OTP (นาที)
External Services#
PAYMENT_ENDPOINT=http://localhost:9300
OLD_URL_ENDPOINT=http://localhost:8080
STRORE_URL=https://static.probookingcenter.com
Queue & Cache#
CACHE_DRIVER=database
QUEUE_CONNECTION=database
SESSION_DRIVER=file
File Storage#
FILESYSTEM_DRIVER=local # local | s3
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
Notifications (Pusher)#
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
13. การติดตั้งระบบ#
Prerequisites#
Web Server (Nginx หรือ Apache)
ขั้นตอนการติดตั้ง#
14. โครงสร้างโฟลเดอร์#
office3/
├── app/
│ ├── Console/
│ │ ├── Commands/ ← 25+ Artisan commands
│ │ └── Kernel.php ← Schedule configuration
│ ├── Exports/ ← Excel/CSV export classes
│ ├── Helpers/ ← 38+ utility helpers
│ ├── Http/
│ │ ├── Controllers/ ← Controller classes
│ │ ├── Middleware/ ← Auth & role middleware
│ │ └── Requests/ ← Form request validation
│ ├── Jobs/ ← Async queue jobs
│ ├── Mail/ ← Email templates
│ ├── Models/ ← 50+ Eloquent models
│ └── Services/ ← Business logic services
├── config/
│ ├── app.php
│ ├── database.php ← Multi-database config
│ ├── fortify.php ← Auth features
│ ├── dompdf.php ← PDF config
│ └── excel.php ← Spreadsheet config
├── database/
│ ├── migrations/ ← 156 migration files
│ └── seeders/ ← Database seeders
├── public/
│ ├── index.php ← Web entry point
│ └── static/ ← Compiled assets
├── resources/
│ ├── assets/admin/ ← Vue.js source files
│ │ ├── js/
│ │ │ ├── app.js
│ │ │ ├── router.js
│ │ │ └── components/
│ │ └── sass/
│ └── views/ ← Blade templates
├── routes/
│ ├── api.php ← REST API routes
│ ├── web.php ← Web routes
│ ├── booking.php ← Booking routes
│ ├── tour.php ← Tour routes
│ ├── payment.php ← Payment routes
│ ├── invoice.php ← Invoice routes
│ ├── reports.php ← Report routes
│ ├── agency.php ← Agency routes
│ ├── incentive.php ← Incentive routes
│ ├── ticket.php ← Ticket routes
│ └── document.php ← Document routes
├── storage/
│ ├── app/ ← File uploads
│ ├── fonts/ ← PDF fonts
│ └── logs/ ← Application logs
├── .env.example ← Environment template
├── artisan ← Laravel CLI
├── composer.json ← PHP dependencies
├── package.json ← Node dependencies
└── webpack.mix.js ← Laravel Mix config
ข้อมูลเพิ่มเติม#
Timezone#
ระบบใช้ Timezone Asia/Bangkok (UTC+7)ภาษา#
Backend: ภาษาไทยและอังกฤษ (i18n ผ่าน Vue-i18n)
เอกสาร PDF: รองรับภาษาไทย (Custom Font Registration)
Logs#
storage/logs/laravel.log ← Application log (level: debug)
/dev/booking/auto-cancel ← ทดสอบ auto-cancel
/dev/expired-passport ← ทดสอบ expired passport
/dev/export/* ← ทดสอบ export
Modified at 2026-03-24 16:16:35