ถ้าอยากรู้ว่าลูกค้ายังค้างเงินเท่าไร หรือเงินที่รับวันนี้เกี่ยวกับงานงวดไหน เราต้องย้อนกลับไปดูเหตุการณ์ที่เคยเกิดขึ้น สำหรับผม ระบบบัญชีน่าสนใจตรงที่มันเก็บเรื่องเหล่านี้ไว้เป็น ประวัติเหตุการณ์ที่จัดประเภทและอธิบายได้
ผมจึงมองระบบบัญชีเป็นฐานข้อมูลของธุรกิจ เป็นวิธีเก็บว่ามีอะไรเกิดขึ้น กระทบกับอะไร และควรปรากฏในรายงานช่วงไหน พอมองแบบนี้ บัญชีไม่ได้อยู่ห่างจากการคิดเรื่องระบบข้อมูลนัก เพียงแต่ข้อมูลแต่ละรายการมีความหมายและกติกาทางบัญชีกำกับอยู่ด้วย
เหตุการณ์ธุรกิจถูกบันทึกเป็นรายการอย่างไร
ลองใช้ร้านรับซ่อมอุปกรณ์สมมติแห่งหนึ่ง ร้านทำงานให้ลูกค้าเสร็จในงวดแรก ค่าบริการ 10,000 บาท และจะเก็บเงินในงวดถัดไป ตัวอย่างนี้กำหนดให้ผ่านเงื่อนไขรับรู้รายได้แล้ว และมีสิทธิรับเงินโดยไม่มีเงื่อนไขอื่นนอกจากการรอให้ถึงกำหนดชำระ จึงใช้บัญชีลูกหนี้การค้า
เมื่อบันทึกรายการ ร้านจึงมีลูกหนี้เพิ่มและรับรู้รายได้ค่าบริการ แม้เงินยังไม่เข้ามา ต่อมาเมื่อรับเงินครบ ร้านบันทึกเงินสดเพิ่มและลดลูกหนี้จากรายการเดิม การเก็บเงินครั้งหลังไม่ได้ทำให้เกิดรายได้ค่าบริการซ้ำอีกรอบ
ผมชอบที่บัญชีแยกความหมายของเหตุการณ์ออกจากการเคลื่อนไหวของเงินได้ งานที่ทำเสร็จ สิทธิที่จะได้รับเงิน และเงินที่รับจริงเกี่ยวข้องกัน แต่เกิดคนละเวลาได้ การจัดประเภทจึงช่วยให้เราถามข้อมูลได้ละเอียดกว่าดูเพียงยอดเงินเข้าออก
ตัวอย่างนี้ยกมาเฉพาะกลไกรายได้ ลูกหนี้ และการเก็บเงิน โดยตัด VAT ภาษีหัก ณ ที่จ่าย ต้นทุน และรายการอื่นออกจากแบบจำลอง จึงไม่ใช่การคำนวณกำไรสุทธิ ภาษี หรืองบทั้งกิจการ
ความฉลาดของรายการคู่ที่ตรวจยอดกันเองได้
สิ่งที่ผมมองว่าฉลาดมากคือเหตุการณ์ไม่ได้ถูกบันทึกไว้เพียงด้านเดียว หลักบัญชีคู่กำหนดให้ ยอดเดบิตรวมเท่ากับยอดเครดิตรวม ของรายการนั้น ต่อให้จดด้วยมือบนกระดาษ เราก็ยังใช้ความเท่ากันนี้ช่วยตรวจยอดได้ โดยไม่ต้องรอให้มีคอมพิวเตอร์มาคิดแทน
ถ้าอยากเขียนเป็นการตรวจทางคณิตศาสตร์ ผมอาจกำหนดให้ฝั่งเดบิตเป็นบวกและฝั่งเครดิตเป็นลบ เมื่อนำมารวมกันผลต้องเป็นศูนย์ แต่นี่เป็นการเลือกเครื่องหมายเพื่อเช็กสองฝั่ง ไม่ได้หมายความว่าเดบิตคือเงินเข้าหรือยอดเพิ่มเสมอ และเครดิตคือเงินออกหรือยอดลดเสมอ
| เหตุการณ์ | เดบิต | เครดิต | ตรวจสองฝั่ง |
|---|---|---|---|
| รับรู้บริการที่ให้เครดิต | ลูกหนี้การค้า 10,000 | รายได้ค่าบริการ 10,000 | +10,000 − 10,000 = 0 |
| เก็บเงินภายหลัง | เงินสด 10,000 | ลูกหนี้การค้า 10,000 | +10,000 − 10,000 = 0 |
ในรายการแรก เดบิตลูกหนี้ทำให้ลูกหนี้เพิ่ม ส่วนเครดิตรายได้ก็ทำให้รายได้เพิ่มเช่นกัน แต่ในรายการรับเงิน เครดิตลูกหนี้ทำให้ลูกหนี้ลดลง ความหมายว่าเพิ่มหรือลดจึงต้องดูประเภทบัญชีและรายการ ไม่ได้อ่านจากเครื่องหมายที่ผมใช้ตรวจยอดอย่างเดียว ยอดตรวจเป็นศูนย์ก็ไม่ได้ทำให้ยอดทุกบัญชีกลายเป็นศูนย์ตามไปด้วย
อย่างไรก็ดี ถ้ารายการแรกลงเดบิตเงินสดแทนลูกหนี้ทั้งที่ยังไม่ได้รับเงินจริง เครดิตรายได้จำนวนเท่าเดิมก็ยังทำให้สองฝั่งสมดุล นี่เป็นตัวอย่างแยกของการลงผิดบัญชี ไม่ใช่รายการที่นำไปบันทึกต่อจากชุดที่ถูกต้องข้างบน
หรือถ้าตกหล่นทั้งรายการ ยอดสองฝั่งที่เหลือก็อาจยังเท่ากัน รวมถึงรายการที่ไม่ตรงความจริงหรือการทุจริตบางลักษณะด้วย ดังนั้น สมดุลไม่ได้ยืนยันว่าถูกต้อง ครบถ้วน หรือเป็นไปตามข้อกำหนด ยังต้องตรวจรายการให้ตรงกับเหตุการณ์และหลักฐานที่เกี่ยวข้อง จุดตรวจทางคณิตศาสตร์มีประโยชน์มาก แต่มีขอบเขตของมัน

ประวัติรายการกับภาพ ณ วันหนึ่ง ตอบคนละคำถาม
จากประวัติรายการ รวมถึงยอดยกมาและรายการปรับปรุงที่เกี่ยวข้อง เราจึงถามข้อมูลได้หลายแบบ ถ้าถามถึงลูกหนี้ ณ สิ้นงวดแรก เรากำลังมองยอด ณ วันหนึ่ง แต่ถ้าถามรายได้ของงวดแรก เรากำลังดูสิ่งที่รับรู้ระหว่างช่วงเวลา รายงานทั้งสองแบบใช้ข้อมูลที่เกี่ยวข้องกัน แต่มีความหมายด้านเวลาต่างกัน
งวดที่ให้บริการ
รายการนี้ทำให้ลูกหนี้ ณ สิ้นงวด
เพิ่ม 10,000 บาท
รายการนี้ทำให้รายได้ค่าบริการของงวด
เพิ่ม 10,000 บาท
งวดถัดไปที่รับเงิน
เงินสดเพิ่ม 10,000 บาท
ลูกหนี้ลด 10,000 บาท
รายได้ใหม่จากการเก็บเงินครั้งนี้
0 บาท
แสดงผลเฉพาะรายการสมมตินี้ ไม่ใช่ยอดคงเหลือหรือกำไรของทั้งกิจการ การรับรู้รายได้กับการรับเงินเกิดต่างงวดกันได้
ยังมีเวลาอีกชนิดที่ต้องแยกให้ชัด คือวันที่รายการมีผลทางบัญชีกับเวลาที่นำข้อมูลเข้าระบบ คนอาจกดบันทึกภายหลังวันที่เกิดเหตุการณ์ แต่เวลาที่กดบันทึกไม่ได้เป็นตัวตัดสินว่ารายการควรอยู่ในงวดไหน ต้องพิจารณาเหตุการณ์ เงื่อนไขการรับรู้ และข้อกำหนดที่เกี่ยวข้อง ไม่ใช่เลือกวันที่ย้อนหลังได้ตามใจ
ถ้าระบบเก็บทั้งวันที่บัญชีและเวลาบันทึกไว้ เราจะดูได้ว่าเหตุการณ์ถูกจัดให้อยู่ในงวดใดและถูกนำเข้าระบบเมื่อไร ส่วนการแก้ไขรายการหรือข้อมูลของงวดที่ปิดแล้วก็ต้องผ่านหลักเกณฑ์และการควบคุมที่เกี่ยวข้อง ไม่ใช่เปลี่ยนวันที่แล้วถือว่าจบ
คำว่าภาพ ณ วันหนึ่งช่วยให้ผมนึกถึงงบแสดงฐานะการเงินได้ดี แต่ภาพนั้นสร้างจากข้อมูลที่ผ่านการจัดประเภท วัดมูลค่า และปรับปรุงแล้ว บางยอดอาศัยประมาณการด้วย บัญชีจึงไม่ได้เก็บประวัติแบบแตะต้องไม่ได้ และไม่ได้บันทึกข้อมูลดิบทุกอย่างของธุรกิจไว้ทั้งหมด
ถ้ามองมาตรฐานบัญชีจากมุมคนทำระบบ
ถ้ามองในมุมของคนทำระบบ ผมเห็นมาตรฐานบัญชีคล้ายข้อกำหนดที่กำกับการแปลงเหตุการณ์ให้เป็นข้อมูลทางบัญชี ผมจึงนึกภาพเป็น pipeline หรือขั้นตอนจัดการข้อมูล ตั้งแต่รับเหตุการณ์และหลักฐาน ตรวจและจัดประเภท พิจารณาการรับรู้และวัดมูลค่า จนเป็นรายการที่ลงบัญชีและนำไปจัดทำรายงาน
ถ้าเทียบกับ filter หรือ function ผมหมายถึงส่วนที่ใช้ตรวจเงื่อนไขและจัดข้อมูลตามความหมาย เช่น ควรรับรู้รายการในงวดใดหรือรายงานต้องจัดแสดงอย่างไร ข้อมูลเหตุการณ์และหลักฐานต้นทางยังเก็บไว้ได้ แม้ยังไม่ถึงเกณฑ์รับรู้เป็นรายได้ การเทียบนี้ช่วยให้เห็นหน้าที่ของกติกา มากกว่าจะบอกว่ามาตรฐานเป็นโค้ดฟังก์ชันเดียว
- เหตุการณ์และหลักฐานข้อมูลต้นทางที่ต้องตรวจ
- ตรวจและตีความรายการจัดประเภท รับรู้ และวัดมูลค่า
- รายการที่ลงบัญชีบันทึกคู่และตรวจสมดุล
- นำเสนอรายงานจัดกลุ่ม แสดงผล และเปิดเผย
ขั้นตอนเหล่านี้อาจต้องกลับมาทบทวน การประมาณการ รายการปรับปรุง และการเปิดเผยอาจเกิดภายหลัง มาตรฐานจึงเกี่ยวข้องทั้งก่อนและหลังลงบัญชี โดยยังต้องใช้ดุลยพินิจ
มาตรฐานที่เกี่ยวข้องกำหนดหลักที่กิจการต้องถือปฏิบัติ ส่วนนโยบายบัญชีคือหลักและวิธีปฏิบัติที่กิจการเลือกใช้ให้สอดคล้องกับข้อกำหนดเหล่านั้น วิธีที่เลือกได้อาจต่างกันตามข้อเท็จจริงและมาตรฐานที่กิจการใช้ กรอบแนวคิดการรายงานทางการเงินช่วยอธิบายหลักคิด แต่ไม่ใช้แทนหรือข้ามมาตรฐานเฉพาะเรื่อง
ตรงนี้ยังต้องใช้ดุลยพินิจ โดยเฉพาะการตีความข้อเท็จจริงและประมาณการ การมีระบบช่วยคำนวณและตรวจเงื่อนไขไม่ได้ทำให้ความรับผิดชอบต่อความหมายของข้อมูลหายไป คนออกแบบระบบจึงควรเข้าใจด้วยว่าช่องข้อมูลหรือเงื่อนไขที่กำลังสร้างนั้นรองรับหลักบัญชีเรื่องใด
ข้อมูลบัญชีชุดเดียวกัน เลือกมองให้ตรงกับคำถาม
เมื่อมีรายการบัญชีแล้ว การวิเคราะห์ข้อมูลบัญชีเริ่มจากเลือกว่าจะดูอะไร ถ้าถามรายได้ค่าบริการ เราต้องเลือกบัญชีรายได้และงวดที่เกี่ยวข้อง แล้วใช้ยอดรายได้ที่รับรู้เป็นตัววัด ส่วนการรวมเดบิตบวกเครดิตลบให้เป็นศูนย์ก่อนหน้านี้เป็นการตรวจสมดุล ซึ่งทำคนละหน้าที่กับการหายอดรายได้
การบัญชีวิเคราะห์ (analytic accounting) เป็นแนวทางหนึ่งที่ช่วยผูกมิติการบริหารกับรายการ ลองกำกับรายได้ค่าบริการที่รับรู้ 10,000 บาทในงวดแรกว่าเป็นโครงการงานซ่อม ก และอยู่ในแผนกบริการ ถ้าดูตามโครงการหรือแผนก ก็ยังเห็นรายได้ 10,000 บาทจากรายการเดียวกัน จึงไม่ควรนำยอดจากสองมุมมาบวกเป็นรายได้ใหม่
ถ้าใช้ภาษาของระบบข้อมูล ป้ายหรือ tag/label คือข้อมูลกำกับว่ารายการเกี่ยวข้องกับอะไร มุมมองหรือ view คือการเลือกและจัดแสดงข้อมูลตามคำถาม ส่วน cube เป็นแบบจำลองสรุปตัววัดตามหลายมิติ เช่น รายได้ตามโครงการและแผนก คำเหล่านี้ทำคนละงานกัน แม้จะใช้ประกอบกันได้ และแต่ละระบบอาจมีวิธีเก็บหรือสรุปต่างกัน
การเพิ่มมิติไม่ได้ทำให้เกิดรายได้ใหม่หรือใช้แทนหลักการรับรู้ ส่วนยอดในบัญชีแยกประเภทหลักยังต้องอ้างอิงรายการบัญชีที่ถูกต้อง การเปลี่ยนป้ายหรือจัดหมวดสำหรับวิเคราะห์จึงต้องแยกจากการแก้ยอดหรือการรับรู้ทางบัญชี ซึ่งต้องมีเหตุผลและการควบคุมที่เกี่ยวข้องด้วย
สำหรับผม คำถามเวลาสร้างระบบจึงต่อจากรายการต้นทางไปถึงการใช้งานได้ว่า ตัวเลขนี้เกิดจากเหตุการณ์อะไร อยู่ในงวดไหน ใช้เกณฑ์ใด และกำลังดูผ่านมิติอะไร ก่อนเพิ่มมุมมองใหม่ เรารู้หรือยังว่าตัวเลขที่นำมาดูนั้นนับอะไรอยู่
แหล่งอ่านต่อ
บทความนี้เป็นมุมมองส่วนตัวที่ใช้กรณีสมมติอธิบายแนวคิด ตรวจหลักพื้นฐานเพิ่มเติมได้จากแหล่งต่อไปนี้
- Conceptual Framework for Financial Reporting ที่ AASB เผยแพร่ เรื่องเกณฑ์คงค้าง งวดรายงาน และการประมาณการ
- IFRS Foundation: IAS 8 แนวคิดเรื่องนโยบายบัญชีและการใช้ข้อกำหนดที่เกี่ยวข้อง
- OpenStax: หลักการบัญชีและยอดปกติของบัญชี
- OpenStax: การจัดทำงบทดลอง
- Microsoft: ภาพรวม OLAP เรื่องตัววัด มิติ และ cube
- Odoo: Analytic accounting ตัวอย่างการใช้มิติโครงการและแผนกเพื่อวิเคราะห์ต้นทุนหรือรายได้