โค้ด 1 บรรทัดเขียนไว้ว่า ถ้าไม่ใช่ญี่ปุ่นให้คืนค่า 0
September 10, 2026 · Taro — ผู้ก่อตั้ง KAZENA
วันที่ 2 กันยายน ขณะดูยอดสรุปรายเดือนในบัญชีทดสอบ ผมสังเกตว่าบรรทัดภาษีซื้อเป็น 0 ติดกัน 3 เดือน มีบางเดือนที่ 0 ถูกต้อง ถ้าการซื้อทั้งหมดไม่มีภาษี ยอดก็เป็น 0 แต่ในบัญชีนั้นมีการซื้อที่มี faktur pajak อยู่ 41 รายการ และภาษีรวมประมาณ Rp 3,180,000 ยอดสรุปไม่ได้คำนวณผิด แต่ในรายการบันทึกบัญชีที่อยู่เบื้องหลังนั้น ไม่มีสักรายการเดียวที่มีภาษีอยู่
ความต่างอยู่ที่เส้นทาง รายการที่พิมพ์ด้วยมือแยกภาษีออกมาถูกต้อง มีเพียงรายการที่อ่านจากรูปถ่ายแล้วบันทึกเท่านั้นที่นำยอดรวมภาษีทั้งก้อนไปลงเป็นค่าใช้จ่าย ในเดือนเดียวกัน บัญชีเดียวกัน รายการที่มีภาษีกับรายการที่ไม่มีวางเรียงกันอยู่โดยไม่มีอะไรให้แยกแยะ ยอดเงินของทั้ง 2 แบบตรงกับยอดรวมที่พิมพ์อยู่บนกระดาษ
สาเหตุเป็นแบบนี้ ตรงส่วนที่แปลงผลการอ่านให้เป็นรายการบันทึกบัญชี มีฟังก์ชันหนึ่งทำหน้าที่แยกภาษีออกมา เดิมเขียนไว้สำหรับญี่ปุ่น โดยคำนวณภาษีซื้อจากประเภทภาษีและอัตราภาษี ตอนที่เราเพิ่มอินโดนีเซียและฟิลิปปินส์ ผมใส่โค้ด 1 บรรทัดไว้ที่หัวฟังก์ชันนั้นว่า ถ้าประเทศไม่ใช่ญี่ปุ่นให้คืนค่า 0 ตอนนั้นเส้นทางอ่านรูปถ่ายยังรับเฉพาะใบเสร็จของญี่ปุ่นเท่านั้น เป็นบรรทัดที่ผมเขียนไว้โดยตั้งใจว่าจะกลับมาแก้ทีหลัง
ผมใส่บรรทัดนั้นเมื่อวันที่ 18 มิถุนายน และเปิดให้ใช้การอ่านรูปถ่ายกับบัญชีของอินโดนีเซียในเดือนกรกฎาคม แปลว่าสภาพนี้อยู่มา 2 เดือนครึ่ง ที่รู้ตัวก็เพราะบังเอิญ ระหว่างสร้างหน้าจอยอดสรุป บนหน้าจอยืนยันหลังการอ่านนั้น ไม่มีช่องภาษีอยู่เลยตั้งแต่ต้น ไม่ใช่ว่ามี 0 อยู่ในช่อง แต่ไม่มีช่องเลย ค่าที่ไม่ถูกแสดงออกมา ย่อมไม่มีทางตรวจด้วยตาได้
ผลที่เกิดขึ้นคืออย่างนี้ ผู้ประกอบการที่จดทะเบียนเป็น PKP ในอินโดนีเซียจะนำ PPN จากการขายมาหักด้วย PPN จากการซื้อ แล้วจึงนำส่ง ถ้าฝั่งการซื้อไม่ได้ถูกบันทึกไว้ในบัญชี มันก็ไม่ถูกนำมาหัก และยอดที่ต้องนำส่งก็ถูกกำหนดโดยขาดส่วนนั้นไป ไม่มีอะไรหยุด ไม่มีคำเตือน ตัวเลขเรียบร้อยสวยงามจนถึงบรรทัดสุดท้าย มีเพียงยอดรวมเท่านั้นที่มากกว่าที่ควรจะเป็น
ที่ได้รับผลกระทบมีเพียงบัญชีทดสอบกับบัญชีของเราเอง ยังไม่มีบัญชีผู้ใช้รายใดที่ใช้ยื่นจริง เพราะเหตุนี้เท่านั้น ผมจึงเขียนเรื่องนี้ในฐานะเรื่องที่เกือบพลาดได้ เราแค่โชคดี ไม่ใช่ว่ากลไกของเราหยุดมันไว้ ถ้าผมพบช้าไปอีกเดือนเดียว บทความนี้คงต้องเริ่มด้วยคำขอโทษ
จากตรงนี้คือสิ่งที่ผมอยากแก้จริง ๆ เรายังไม่เคยตกลงกันว่าจะทำอย่างไรเมื่อพบข้อผิดพลาดที่แตะต้องตัวเงิน ที่ผ่านมาคือ แก้ ใส่ไปในเวอร์ชันถัดไป แล้วเขียนบันทึกการเปลี่ยนแปลง 1 บรรทัด เป็นขั้นตอนเดียวกับการแก้ถ้อยคำบนหน้าจอ เมื่อเรื่องที่ทำให้เงินขยับถูกวางไว้บนชั้นเดียวกับเรื่องอื่น น้ำหนักในการจัดการจึงขึ้นอยู่กับว่าใครเป็นคนพบ
สิ่งที่เราตกลงกันมีดังนี้ อย่างแรก นับให้ได้ว่ารายการไหนได้รับผลกระทบ ในช่วงเวลาใดถึงใด แล้วทำเป็นรายการไว้ ต้องทำก่อนแก้ เพราะเมื่อแก้แล้ว จะแยกไม่ออกอีกว่ารายการไหนได้รับผลกระทบ ถัดมา เราเป็นฝ่ายแจ้งผู้ที่ใช้บัญชีนั้นเอง ไม่ใช่บอกว่าแก้แล้ว แต่บอกว่ารายการลักษณะนี้ในช่วงเวลานี้ไม่มีภาษีอยู่ และนี่คือเหตุผล สำหรับสิ่งที่พบซึ่งกระทบตัวเงิน อะไรขยับและขยับเท่าไร สำคัญกว่าว่าแก้แล้วหรือยัง
เรื่องที่ลังเลนานที่สุดคือ เราควรเขียนทับรายการเก่าเองหรือไม่ ถ้าคำนวณใหม่ ตัวเลขก็จะถูกต้อง แต่การที่ซอฟต์แวร์ขยับตัวเลขในบัญชีที่ปิดไปแล้วอย่างเงียบ ๆ ก็เป็นอุบัติเหตุอีกแบบหนึ่ง สิ่งที่เราเลือกคือแสดงรายการออกมา แล้วให้ผู้ใช้เป็นคนเลือกเอง เรามีคำสั่งแก้ทีเดียวทั้งหมดด้วย แต่ก่อนกด เราจะแสดงก่อนว่ามีกี่รายการและเงินจะขยับเท่าไร สิ่งที่ขยับไปแล้วสามารถย้อนกลับได้
ฝั่งการสร้างเราก็แก้ด้วย เรานำการแยกตามประเทศออกมาจากในตัวฟังก์ชัน วิธีแยกภาษีถูกเขียนไว้ในตารางรายประเทศ ญี่ปุ่น อินโดนีเซีย ฟิลิปปินส์ ถ้ามีประเทศที่ไม่อยู่ในตารางเข้ามา มันจะไม่คืนค่า 0 แต่จะหยุดตรงนั้นและแจ้งข้อผิดพลาด เลข 0 มีหน้าตาเหมือนคำตอบ การไม่คืนค่าที่แกล้งทำเป็นคำตอบ คือส่วนที่สำคัญที่สุดของการแก้ครั้งนี้
เราเพิ่มการทดสอบด้วย ใบเสร็จใบเดียวกันจะถูกบันทึก 2 ทาง ทางหนึ่งอ่านจากรูปถ่าย อีกทางพิมพ์ด้วยมือ แล้วรายการที่ออกมาต้องตรงกัน การทดสอบของเราก่อนหน้านี้ดูเพียงว่าแต่ละเส้นทางถูกต้องในตัวเองหรือไม่ สำหรับฟีเจอร์ที่มีทางเข้า 2 ทาง การที่แต่ละทางถูกต้องในตัวเอง กับการที่ทั้ง 2 ทางให้คำตอบเดียวกัน เป็นคนละเรื่องกัน
บ่ายวันที่ผมพบเรื่องนี้ ฝนตกหนักพอดี ผมต้องยืนรออยู่ใต้ชายคาหน้าร้านราว 30 นาที และนั่งนับรายการที่ได้รับผลกระทบไปพลางจิบ kopi susu gula aren ฝนบ่ายของจาการ์ตาหยุดแผนของเราไว้ แล้วยื่นเวลามาให้แทน ตัวเลข 41 รายการนั้น ผมได้มาจาก 30 นาทีนั้นเอง
ขอเขียนไว้กันเข้าใจผิด ผมไม่ใช่นักบัญชีภาษี ทั้งเงื่อนไขที่ภาษีซื้อจะนำมาเครดิตได้ และหลักฐานที่ต้องใช้ ล้วนถูกกำหนดจากฝั่งกฎเกณฑ์และเปลี่ยนแปลงได้เสมอ สิ่งที่เขียนไว้ที่นี่คือบันทึกความบกพร่องของซอฟต์แวร์ของเราเอง ที่ไม่ได้บันทึกภาษีไว้เลย ส่วนการตัดสินใจในการยื่นจริง กรุณาตรวจสอบกับผู้เชี่ยวชาญเสมอ
สุดท้ายขอฝากไว้ ถ้าคุณพบรายการในบัญชี KAZENA ที่ไม่มีภาษีซื้ออยู่ กรุณาบอกผม ไม่ว่าจะแก้ไปแล้วหรือยัง เราจะนับใหม่จากฝั่งเรา ข้อผิดพลาดที่แตะต้องตัวเงินนั้น ตราบใดที่เรายังเงียบ จากฝั่งผู้ใช้มันดูเหมือนตัวเลขที่ถูกต้องทุกประการ การจะให้คนช่วยบอกสิ่งที่มองไม่เห็น เราต่างหากที่ควรเขียนไว้ก่อนว่าต้องดูตรงไหน
บอกเราว่าคุณคิดอย่างไร
ความรู้สึกเมื่อได้ใช้แอป KAZENA สิ่งที่เราควรแก้ไข ฟีเจอร์ที่คุณอยากให้มี — หากคุณทำธุรกิจขนาดเล็กหรือขนาดกลาง หรือทำงานอิสระในอินโดนีเซียหรือฟิลิปปินส์ เสียงของคุณคือสิ่งที่เราอยากได้ยินมากที่สุด ข้อความที่เขียนเป็นภาษาอินโดนีเซียหรือภาษาอังกฤษจะได้รับการตอบจากเพื่อนร่วมทีมที่เข้าใจตลาดของคุณจากภายใน KAZENA Books มีกำหนดเปิดตัวในฟิลิปปินส์และอินโดนีเซียแล้ว — และหากบริษัทของคุณต้องการนำไปเปิดตัวในประเทศอื่นในฐานะพันธมิตร หรือสนใจซื้อระบบนี้ เราก็ยินดีอย่างยิ่งที่จะได้รับข่าวจากคุณเช่นกัน นอกจากนี้เรายังรับพัฒนาระบบใหม่ด้วย เราเป็นทีมเล็ก จึงไม่อาจเริ่มงานได้ทันทีเสมอไป — แต่สิ่งที่เราสร้างนั้นมีคุณภาพแบบเมดอินเจแปน และยังคงใกล้ชิดกับวิธีการทำธุรกิจที่เป็นจริงที่นี่ ทีละโครงการ
ติดต่อเรา