ปัญหาเดิม
ทริปถูกจัดการด้วยกระดาษ อีเมล และไฟล์ Excel แยกกัน ฝ่ายบัญชีต้องไล่ตามเอกสารและยอดเงินจากผู้เดินทางเอง ไม่รู้ว่ารายการไหนรอตรวจมานานเท่าไร ก่อนเบิกเงินสำรองจ่ายก็เช็กไม่ได้ว่าทริปถูกบันทึกแล้วหรือยัง และผู้บริหารไม่เห็นว่าใครไปไหน เมื่อไร ใช้เงินเท่าไร
สิ่งที่สร้าง
เว็บแอป Next.js + ASP.NET Core ที่ทริปเดินตามขั้น วางแผน → เดินทาง → แนบเอกสาร → บัญชีตรวจ → อนุมัติหรือตีกลับ ผู้เดินทางมีฟอร์มทริป ปฏิทิน แผนที่ และแดชบอร์ด ฝ่ายบัญชีมีหน้าอนุมัติบันทึกค่าใช้จ่ายเดินทางที่แยกคิวตามสถานะและเดือน ทุกการตัดสินเก็บเป็นประวัติและแจ้งผลทางอีเมล
ฟีเจอร์หลัก
- บันทึกทริป 4 ประเภท (Customer Visiting, Business Trip, Booth, Outstation) พร้อมปลายทาง วันที่ ผู้รับผิดชอบ ผู้เข้าพบ วาระ และงบประมาณ
- เอกสารบังคับ 3 ฉบับ: Business Plan ก่อนเดินทาง Report และสรุปค่าใช้จ่ายหลังกลับ แนบครบพร้อมยอดเงินแล้วทริปเข้าคิวบัญชีเอง
- ฝ่ายบัญชีเปิดไฟล์ติ๊กตรวจทีละฉบับ แล้วอนุมัติ หรือตีกลับพร้อมหมายเหตุ ทริปที่อนุมัติแล้วถูกล็อก
- คิวบัญชีแยกแท็บ รอตรวจ อนุมัติแล้ว ตีกลับ และติดตามเอกสาร แบ่งตามเดือน พร้อมยอดรวม รายการที่รอนานสุด และรายการที่เกิน 7 วัน
- แท็บรายการเดินทางใหม่ ให้บัญชีเช็กงบและ Business Plan ของทริปที่ยังไม่เดินทาง ก่อนเบิกเงินสำรองจ่าย
- อีเมลแจ้งบัญชีเมื่อทริปพร้อมตรวจ แจ้งผลอนุมัติหรือตีกลับให้เจ้าของทริป และเตือนคนที่ค้างเอกสาร โดยเว้นอย่างน้อย 24 ชั่วโมง
- ปฏิทินการเดินทาง แผนที่โลกรายเดือน แดชบอร์ดทริป วันเดินทาง และงบที่อนุมัติเทียบช่วงก่อน และรายงาน Excel ตามช่วงเดือน
- สิทธิ์ Admin, บัญชี และผู้ใช้ทั่วไป มอบสิทธิ์ดูหรืออนุมัติหน้าค่าใช้จ่ายให้คนอื่นได้ เข้าระบบด้วย SSO ของบริษัท ใช้ได้ทั้งไทยและอังกฤษ
เบื้องหลังทางเทคนิค
- สถานะ “รอบัญชีตรวจ” คำนวณจากข้อมูลจริง คือเอกสารครบ 3 ฉบับ มียอดเงิน และกลับจากทริปแล้ว ไม่ต้องให้ผู้เดินทางกดส่งเอง ส่วนการอนุมัติ ตีกลับ และส่งใหม่ทุกครั้งเขียนลงตารางประวัติแยก
- กฎ “ทุกคนดูได้ เฉพาะผู้สร้างแก้ได้” และสิทธิ์อนุมัติค่าใช้จ่ายบังคับทั้งใน UI และ API ฝ่ายบัญชีตรวจได้แต่แก้ทริปไม่ได้
- n8n ส่งอีเมลเตือนเองแต่เขียนลงตาราง log เดียวกับระบบ จึงนับ cooldown ร่วมกัน ผู้ดูแลแก้เทมเพลตและค่า SMTP ได้ในแอป รหัสผ่านเข้ารหัสด้วย ASP.NET Data Protection