← Blog

Freeable 3.18.0 — ปิดปีบัญชี ยกยอดข้ามปี และแดชบอร์ดสำหรับนักบัญชี

รีลีสที่ใหญ่ที่สุดของสาย 3.18 — เติมงานบัญชีส่วนที่ขาดมาตลอดคือการปิดปี

ปิดปีบัญชีและยกยอดข้ามปี

ยกยอดอย่างไร

เมื่อปิดปี ระบบจะจัดการยอดตามหลักบัญชี

  • บัญชีหมวดงบดุล (สินทรัพย์ หนี้สิน ทุน) — ยกยอดคงเหลือไปเป็นยอดต้นงวดของปีถัดไป
  • บัญชีหมวดกำไรขาดทุน (รายได้ ต้นทุน ค่าใช้จ่าย) — ไม่ยกไป แต่สรุปยอดสุทธิเข้าบัญชีกำไรสะสม ซึ่งเป็นวิธีที่ถูกต้องตามหลักบัญชี และตั้งค่าได้ว่าจะใช้เลขบัญชีกำไรสะสมใด
  • เมื่อปิดปีแล้ว ล็อกทั้ง 12 งวดของปีนั้น ทันที

ย้อนกลับได้

จุดที่ออกแบบมาอย่างระมัดระวังคือการปิดปีย้อนกลับได้ — ล้างยอดต้นงวดของปีถัดไป ปลดล็อกงวด และลบร่องรอยการปิด

ที่ทำได้สะอาดเพราะยอดต้นงวดมีตัวเขียนตัวเดียวคือระบบปิดปีนี้เอง จึงมั่นใจได้ว่าย้อนแล้วไม่มีอะไรตกค้าง

ป้องกันการทำผิดลำดับ

  • ปิดปีเดิมซ้ำไม่ได้
  • ถ้าปีเก่ายังมียอดที่ยังไม่ปิด ต้องปิดปีเก่าก่อน
  • การย้อนต้องไล่จากปีใหม่สุดย้อนลงมา

ทั้งหมดทำในรายการเดียวพร้อมบันทึกร่องรอย และมีชุดทดสอบ 17 เคส

ล็อกงวดบัญชี

เพิ่มการตรวจว่าวันที่ของเอกสารตกอยู่ในงวดที่ถูกล็อกหรือไม่ ถ้าใช่จะบล็อกทุกส่วนของระบบ ทั้งงานขาย งานซื้อ คลังสินค้า รายการบัญชี การยกเลิกเอกสาร และการเรียกผ่าน API

ข้อความที่แสดงบอกชัดว่าติดที่ปีไหนงวดไหนและปลดล็อกได้ที่ไหน แทนที่จะขึ้นแค่ว่าบันทึกไม่ได้ ส่วนผู้ดูแลระบบยังข้ามการล็อกได้เมื่อจำเป็น

งวดปีบัญชีไม่จำกัดจำนวนปี

หน้าตั้งค่าใหม่สำหรับกำหนดรอบปีบัญชี

  • ตั้งเดือนเริ่มรอบได้ — มกราคมคือตรงกับปีปฏิทิน เดือนอื่นคือรอบคร่อมปี ซึ่งธุรกิจไทยจำนวนมากใช้ โดยการเปลี่ยนมีผลเฉพาะปีที่สร้างใหม่ เพื่อไม่ให้งวดขยับใต้เอกสารที่บันทึกไปแล้ว
  • สร้างงวดเป็นช่วงปีหรือกดเพิ่มปีถัดไป — รองรับอนาคตไม่จำกัด ต่างจากข้อจำกัดเดิมที่รองรับได้แค่ 2 ปี
  • ลบปีได้เฉพาะปีที่ยังไม่มียอด
  • ระบบใช้ตารางงวดใหม่ก่อน แล้วถอยไปใช้วิธีเดิมถ้ายังไม่ได้ตั้ง เอกสารและลูกค้าเดิมจึงไม่กระทบจนกว่าจะตั้งงวดเอง

แดชบอร์ดสำหรับนักบัญชี

หน้าแรกของส่วนบัญชีใหม่ แบ่งเป็นสองส่วน

สรุปประจำวัน

งวดปัจจุบันและปีที่ค้างปิด · ยอดขายและยอดซื้อเดือนนี้ · ภาษีขายหักภาษีซื้อเดือนนี้ · ลูกหนี้และเจ้าหนี้คงค้าง · จำนวนใบสำคัญเดือนนี้

ตรวจความผิดปกติ 5 หมวด

  • งวดบัญชีและการปิดปี — วันนี้ไม่มีงวดรองรับ งวดถูกล็อก ปีค้างปิด หรือปีหน้ายังไม่ได้สร้าง
  • ความถูกต้องของรายการบัญชี — ใบสำคัญที่เดบิตไม่เท่าเครดิต บัญชีที่ไม่มีในผัง และยอดคงเหลือที่ไม่ตรงกับรายการ
  • ลูกหนี้-เจ้าหนี้เกินกำหนด
  • เอกสารผิดปกติ — ร่างค้าง เอกสารลงวันที่อนาคต ยอดค้างติดลบ และเอกสารที่ถูกยกเลิกเดือนนี้
  • ภาษี — e-Tax ที่ยังไม่ได้รับการตอบรับ และบิลที่ตกหล่นจากแฟ้มยื่นภาษี

แต่ละการเตือนมีระดับความสำคัญ (แดงคือข้อมูลผิด เหลืองคือค้างดำเนินการ ฟ้าคือควรรู้) พร้อมตัวอย่าง 10 รายการและลิงก์ไปหน้าจัดการ

หน้านี้เปิดขึ้นทันทีแล้วค่อยดึงข้อมูลแต่ละหมวดตามมาพร้อมกัน การคำนวณหนักจึงไม่ทำให้ทั้งหน้าค้าง

เมนูงานสำหรับบัญชีและการ์ดออเดอร์มาตรฐาน

เพิ่มเมนูรวมงานประจำที่นักบัญชีต้องทำ งานแรกคือเปิดใบกำกับภาษีสำหรับออเดอร์ออนไลน์ที่ลูกค้าขอ พร้อมค้นหาและแบ่งหน้า

พร้อมกันนั้นทำการ์ดแสดงออเดอร์มาตรฐานที่ใช้ร่วมกันทุกหน้า แสดงหัวออเดอร์ สายเอกสารที่เกี่ยวข้องพร้อมป้ายสีบอกสถานะ ข้อมูลผู้ซื้อ การชำระและขนส่ง ข้อมูลใบกำกับภาษี รายการสินค้าพร้อมรูป และยอดรวม

มีกฎเหล็กคือห้ามดึงข้อมูลจากภายในการ์ด ต้องเตรียมข้อมูลมาให้ครบก่อน ผลของกฎนี้วัดได้ — จากเดิมที่หน้าหนึ่งดึงข้อมูลกว่า 250 ครั้ง เหลือไม่เกิน 7 ครั้งต่อหน้า และโหลด 50 การ์ดใน 0.11 วินาที

จัดบ้านเมนู

ถอดเมนูซื้อ ขาย สินค้า และออเดอร์ออนไลน์ออกจากส่วนบัญชีทั้งชุด (40 หน้า) เพราะซ้ำซ้อนกับส่วนงานที่เป็นเจ้าของจริง ส่วนบัญชีเหลือเฉพาะงานบัญชี 3 หมวด — ภาษี บัญชีและการเงิน และตั้งค่า

รวมกุญแจส่งอีเมลไว้จุดเดียว

เดิมกุญแจสำหรับส่งอีเมลกระจายอยู่ 3 ที่ ตอนนี้รวมเป็นหนึ่งเครื่องหนึ่งกุญแจ ตั้งค่าได้จากหน้าจอเดียวพร้อมปุ่มทดสอบส่ง แล้วส่งค่าให้ทุกบริการตอนเริ่มระบบ

ลบกุญแจที่ฝังในโค้ดและอีเมลที่ส่งแบบไม่เข้ารหัส

ระหว่างทางพบปัญหาความปลอดภัย 5 จุด — กุญแจที่ฝังอยู่ในโค้ดโดยตรง และการส่งอีเมลแจ้งเตือนแบบไม่เข้ารหัสไปยังอีเมลส่วนตัว ลบออกทั้งหมดเพราะซ้ำซ้อนกับระบบแจ้งเตือนที่มีอยู่แล้ว

พร้อมบันทึกเตือนไว้ชัดเจนว่ากุญแจเก่าต้องถูกเพิกถอน เพราะมันยังอยู่ในประวัติของโค้ด — การลบออกจากไฟล์ปัจจุบันไม่ได้ทำให้มันหายไป

งานฝั่งงานอัตโนมัติ

  • เขตเวลาต่อลูกค้า — งานรายวันคำนวณคำว่า “วันนี้” ตามเขตเวลาของลูกค้าแต่ละราย แทนที่จะตรึงไว้ที่เวลาไทย (แก้ 40 ไฟล์) ทำให้การแจ้งเตือนที่อิงวันที่ตรงกับเที่ยงคืนของลูกค้าจริง
  • ประวัติการรัน — บันทึกสรุปทุกครั้งไม่ว่าจะสำเร็จ ไม่มีงาน หรือล้มเหลว เก็บ 5 ครั้งล่าสุดต่องาน พร้อมหน้าจอที่แสดงผลล่าสุด ปุ่มสั่งรันทันที และดูประวัติย้อนหลังได้
  • ประมวลผลข้อความจาก Facebook ได้จริง — จากเดิมที่รับมาแล้วไม่ได้ทำอะไรต่อ ตอนนี้แยกข้อมูลออกมาเป็นเหตุการณ์ที่ใช้งานได้ ครบทั้ง 9 แหล่งข้อความขาเข้า
  • ปิดงานอัตโนมัติเมื่อล้มเหลวติดกัน 5 ครั้ง พร้อมส่งอีเมลแจ้งผู้ดูแลทุกคน
  • ข้ามร้านที่การเชื่อมต่อหมดอายุ — กันงานล้มเหลวรัวทุกรอบเพราะร้านเดียว
  • ปรับความถี่ของงานให้เหมาะสม และจัดหมวดหมู่ใหม่

แก้บั๊กที่ทำให้ 6 ส่วนของระบบใช้ไม่ได้

บั๊กที่ร้ายแรงที่สุดในรีลีสนี้ — 6 ส่วนของระบบเปิดไม่ได้เลย เพราะกุญแจเข้ารหัสถูกเก็บผิดที่

สาเหตุคือหลังจากแยกบัญชีระบบต่อโดเมนในรีลีส 3.11.0 กุญแจที่ตกไปอยู่ในที่เก็บกลางจะอ่านไม่ได้จากบัญชีของแต่ละโดเมน ส่วนที่ส่งข้อมูลโดเมนไปครบก็ทำงานปกติ ส่วนที่ลืมส่งก็พังหมด

แก้บั๊กสายงานเชื่อมออเดอร์ออนไลน์บน PostgreSQL

พบบั๊กแฝงสองตัวที่ทำให้สายงานพังบนฐานข้อมูลใหม่ ซึ่งไม่เคยเจอเพราะโค้ดส่วนนี้ยังไม่เคยรันบน PostgreSQL จริง

  • การเปิดรายการซ้อนกัน — ตัวออกเลขเอกสารเปิดรายการของตัวเองเสมอ พอถูกเรียกจากในรายการอื่นก็ผิดพลาดทุกครั้ง แก้ให้ตรวจก่อนว่ามีรายการครอบอยู่หรือไม่
  • ใส่ค่ายาวเกินความจุคอลัมน์ — ใส่วันที่ลงในช่องที่รับได้ตัวอักษรเดียว ซึ่งเป็นรูปแบบบั๊กเดียวกับที่เคยแก้ไปแล้วที่อื่น

หลังแก้แล้วยืนยันด้วยการรันจริง — จัดฉากออเดอร์พร้อมส่ง 1 ใบ แล้วให้งานอัตโนมัติทำงาน ผลคือแปลงสำเร็จได้เอกสารครบ ตัดสต๊อก และลงบัญชีดุลครบในรอบเดียว

แก้บั๊กอื่น

  • หน้ารายละเอียดสินค้าเปิดไม่ได้สำหรับสินค้าที่นำเข้าจากระบบเดิม — ปัญหาช่องว่างต่อท้ายอีกครั้ง แก้ให้ตัดช่องว่างทั้งสองฝั่งแล้วใช้ค่ามาตรฐานต่อในทุกการค้นหาย่อย
  • ปลดล็อกงานที่ค้างตอนเริ่มระบบ — งานที่ถูกหยุดกลางคัน (ตอนอัปเดตหรือระบบล่ม) จะทิ้งสถานะ “กำลังรัน” ค้างไว้ ทำให้งานนั้นไม่รันอีกเลย พบว่ามีงานค้างมาตั้งแต่เดือนเมษายน
  • ตัวบันทึกเหตุการณ์ของตัวเชื่อม Lazada พังบน Linux — พยายามเขียนไฟล์ไปยังเส้นทางแบบ Windows ทำให้ทุกครั้งที่ API มีข้อผิดพลาด ระบบพังตามไปด้วย
  • สองงานที่ไม่เคยบันทึกประวัติการรัน
  • ปุ่มดูประวัติกดแล้วไม่ขึ้น — สคริปต์ทำงานก่อนที่ไลบรารีจะโหลดเสร็จ
Freeable

บริหารจัดการข้อมูลในองค์กร ครบในที่เดียว

ดูรายละเอียด →

อ่านต่อ

Freeable

รหัสผ่าน 2026 — อักษรพิเศษ มาตรฐานสากล กฎหมายไทย และ 2FA/3FA ที่ควรรู้

กฎรหัสผ่านที่เราคุ้นเคย — ต้องมีตัวใหญ่ ตัวเล็ก ตัวเลข อักษรพิเศษ และเปลี่ยนทุก 90 วัน — ถูกมาตรฐานสากลถอดออกไปแล้ว บทความนี้รวบรวมว่าปัจจุบันมาตรฐานว่าอย่างไร กฎหมายไทยกำหนดอะไร และ 2FA ช่วยตรงไหนที่รหัสผ่านช่วยไม่ได้

Freeable

ค่าหนึ่งค่ามี 4 หน้าที่ — มาตรฐานการแทนค่า เก็บ · ส่ง · คำนวณ · แสดง

ปัญหาเรื่องวันที่ไม่ใช่ปัญหาของวันที่ แต่เป็นหนึ่งตัวอย่างของปัญหาตระกูลเดียวกัน — ค่าหนึ่งค่าถูกใช้ทำ 4 หน้าที่ที่ต่างกัน พอรูปแบบของหน้าที่หนึ่งรั่วไปอีกหน้าที่ ตัวเลขก็เพี้ยนเงียบ ๆ

Freeable

เวลาในระบบมีหลายชั้น และมันไม่ตรงกัน — บทเรียนจากบั๊กที่ไล่ 8 วันแล้วสรุปผิดหลายรอบ

บนเครื่องจริงของเรามีเขตเวลาอยู่ 3 ชั้นและไม่ตรงกันสักคู่ ทำให้ตัวเลขที่ดูเหมือนเทียบกันได้จริง ๆ เทียบไม่ได้ บทความนี้เล่าว่าเวลาซ่อนอยู่ที่ไหนบ้าง ทำไม "วันนี้" ถึงเป็นคำที่อันตราย และงานอัตโนมัติที่ค้าง 11 วันเพราะนาฬิกาเดินล้ำหน้า