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 มีข้อผิดพลาด ระบบพังตามไปด้วย
- สองงานที่ไม่เคยบันทึกประวัติการรัน
- ปุ่มดูประวัติกดแล้วไม่ขึ้น — สคริปต์ทำงานก่อนที่ไลบรารีจะโหลดเสร็จ
บริหารจัดการข้อมูลในองค์กร ครบในที่เดียว