probooking
    • ProBookingCenter
    • Data Dictionary
    • Database Diagram

    ProBookingCenter

    ProBookingCenter — เอกสารอธิบายระบบ#

    ระบบจัดการการจองและทัวร์สำหรับองค์กร
    Version: 29.07.2023 | Framework: Laravel 8 | PHP ^7.3 / ^8.0

    สารบัญ#

    1.
    ภาพรวมระบบ
    2.
    Tech Stack
    3.
    สถาปัตยกรรมระบบ (Architecture)
    4.
    โครงสร้างฐานข้อมูล (Database)
    5.
    โมดูลหลักของระบบ
    6.
    สถานะการจอง (Booking Status Flow)
    7.
    ระบบ Authentication & Authorization
    8.
    API Endpoints
    9.
    การสร้างเอกสาร (Document Generation)
    10.
    Background Jobs & Commands
    11.
    Frontend (Vue.js SPA)
    12.
    Environment Variables
    13.
    การติดตั้งระบบ (Installation)
    14.
    โครงสร้างโฟลเดอร์

    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#

    ส่วนประกอบเทคโนโลยี
    FrameworkLaravel 8
    LanguagePHP ^7.3 / ^8.0
    DatabaseMySQL (Multi-database)
    AuthenticationJWT (Firebase/Tymon), Laravel Fortify, Laravel Sanctum
    QueueDatabase Queue
    CacheDatabase Cache

    Frontend#

    ส่วนประกอบเทคโนโลยี
    FrameworkVue.js 2.6.12
    CSS FrameworkBootstrap 5.1.3 + Tailwind CSS 3.4.9
    Build ToolLaravel Mix 6.0.49
    ChartsApexCharts, Chart.js
    UtilitiesjQuery, Lodash, Moment.js
    Date PickerDate-range-picker 3.1
    AlertsSweetalert2
    i18nVue-i18n

    Document Generation#

    ไลบรารีใช้สำหรับ
    DOMPDF + mPDFสร้าง PDF จาก HTML
    PHPSpreadsheet 1.29ไฟล์ Excel (.xlsx)
    PHPWord 1.2ไฟล์ Word (.docx)
    FPDF/FPDIPDF แบบ Advanced
    Maatwebsite Excel 3.1Export/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หน้าที่
    centerCENTER_DB_*ฐานข้อมูลหลัก (User, Booking, Agency, Tour)
    incentiveINCENTIVE_DB_*ใบเสนอราคาและชำระเงิน Incentive
    ticketTICKET_DB_*ระบบจัดการตั๋ว
    reportsREPORT_DB_*ฐานข้อมูลรายงาน (อ่านอย่างเดียว)
    sync_apiSYNC_API_DB_*Sync กับ External API
    websiteWEBSITE_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#

    แสดงสถิติสรุปการจองและรายได้
    กราฟรายงาน (ApexCharts)
    Quick links สำหรับแต่ละ Role

    5.2 Tour Management#

    สร้าง/แก้ไข Tour Series และ Tour Period
    จัดการรถบัสและความจุที่นั่ง
    ตั้งค่าต้นทุนและราคาขาย
    ติดตามสถานะรอบเดินทาง

    5.3 Booking System#

    จองทัวร์แบบ Multi-step
    กรอกข้อมูลผู้โดยสาร (หนังสือเดินทาง, วีซ่า)
    ระบบ Waitlist
    ล็อกที่นั่งอัตโนมัติ
    ส่งอีเมลยืนยันการจอง

    5.4 Payment Processing#

    รับชำระมัดจำและเต็มจำนวน
    สแกนสลิปการชำระเงิน (BotScanSlip)
    ขั้นตอนการอนุมัติการชำระเงิน
    สร้างใบเสร็จรับเงิน

    5.5 Invoice & Receipt#

    ออกใบแจ้งหนี้ PDF/Excel
    ใบแจ้งหนี้แบบ CNX (Chiang Mai), Full, Deposit
    ระบบขอใบแจ้งหนี้
    ประวัติ Invoice

    5.6 Reports#

    รายงานการจอง (Booking Report)
    รายงานต้นทุน (Costing Report)
    รายงานรายได้ (Income Report)
    รายงานเอเจนซี่และคอมมิชชัน
    Export เป็น Excel/PDF

    5.7 Document Export#

    แท็กตรวจคนเข้าเมือง (Immigration Tags)
    รายชื่อห้องพัก (Room List)
    รายชื่อผู้โดยสาร (Passenger List)
    เอกสาร Visa

    5.8 Agency Management#

    ข้อมูลเอเจนซี่และบริษัทในเครือ
    ระบบ Credit Shell
    การยืนยันบริษัท
    ประวัติการจองของเอเจนซี่

    5.9 Incentive Travel#

    สร้างใบเสนอราคา Incentive
    จัดการการชำระเงิน 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
    JWT Token สำหรับ API
    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, ExcelDOMPDF, PHPSpreadsheet
    ใบเสร็จรับเงิน (Receipt)PDFmPDF
    รายชื่อผู้โดยสารExcel, PDFPHPSpreadsheet
    รายชื่อห้องพักExcelPHPSpreadsheet
    Immigration TagsPDFFPDF
    ใบเสนอราคา IncentivePDF, WordDOMPDF, PHPWord
    รายงานต่างๆExcelMaatwebsite 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
    SyncDataToApiSync ข้อมูลไปยัง External APIรัน periodic
    ClearCacheล้าง Cache ของระบบรัน scheduled
    RegisterDompdfFontลงทะเบียน Font สำหรับ PDFรัน once

    Queue Jobs (Async Processing)#

    Jobหน้าที่
    ExportBookingExport ข้อมูลการจองขนาดใหญ่
    ExportBookingDataExport ข้อมูลสำหรับรายงาน
    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#

    PHP ^7.3 หรือ ^8.0
    Composer
    Node.js & NPM
    MySQL 5.7+ หรือ 8.0+
    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 Tools (เฉพาะ APP_ENV=local)#

    /dev/booking/auto-cancel    ← ทดสอบ auto-cancel
    /dev/expired-passport        ← ทดสอบ expired passport
    /dev/export/*                ← ทดสอบ export
    Modified at 2026-03-24 16:16:35
    Next
    Data Dictionary
    Built with