Một dòng ghi: nếu không phải Nhật thì trả về 0
September 10, 2026 · Taro — Nhà sáng lập KAZENA
Ngày 2 tháng 9, khi xem bảng tổng hợp tháng trên một tài khoản thử nghiệm, tôi nhận ra dòng thuế đầu vào đã là 0 suốt 3 tháng liền. Có những tháng 0 là đúng; nếu toàn bộ khoản mua đều không chịu thuế thì bằng 0. Nhưng tài khoản đó chứa 41 khoản mua có faktur pajak, và tiền thuế cộng lại khoảng Rp 3,180,000. Bảng tổng hợp không hề cộng sai. Trong các bút toán nằm dưới nó, không 1 bút toán nào mang thuế cả.
Khác biệt nằm ở lối đi. Những bút toán gõ tay tách thuế ra đúng. Chỉ những bút toán đọc từ ảnh rồi lưu mới dồn cả số tiền đã gồm thuế vào chi phí. Trong cùng một tháng, trên cùng một tài khoản, bút toán có thuế và bút toán không có nằm cạnh nhau mà chẳng có gì để phân biệt. Số tiền của cả 2 loại đều khớp với tổng in trên giấy.
Nguyên nhân là thế này. Ở chỗ biến kết quả đọc thành bút toán có một hàm làm nhiệm vụ tách thuế ra. Hàm ấy vốn viết cho Nhật: từ nhóm thuế và thuế suất, nó tính ra thuế đầu vào. Khi thêm Indonesia và Philippines, tôi đặt 1 dòng ở đầu hàm đó. Nếu quốc gia không phải Nhật thì trả về 0. Lúc ấy lối đọc từ ảnh mới chỉ xử lý hóa đơn Nhật. Đó là dòng tôi viết với ý định sẽ quay lại làm tiếp.
Tôi thêm dòng đó ngày 18 tháng 6. Đến tháng 7 thì mở việc đọc ảnh cho cả sổ sách Indonesia. Nghĩa là tình trạng này kéo dài 2 tháng rưỡi. Tôi phát hiện ra khi đang dựng màn hình tổng hợp, hoàn toàn tình cờ. Trên màn hình xác nhận sau khi đọc, vốn dĩ không hề có ô thuế. Không phải có số 0 nằm đó, mà là không có ô. Một giá trị không được hiển thị thì không thể kiểm bằng mắt.
Cái giá của nó là thế này. Doanh nghiệp đăng ký là PKP ở Indonesia nộp phần PPN trên doanh thu trừ đi PPN trên các khoản mua. Nếu phía mua vào không nằm trong sổ, nó không được trừ, và số phải nộp được chốt mà thiếu phần đó. Không có gì dừng lại. Không có cảnh báo nào. Các con số vẫn gọn gàng đến tận cuối, chỉ mỗi tổng số là lớn hơn mức đáng lẽ phải có.
Chỗ bị ảnh hưởng chỉ là tài khoản thử nghiệm và sổ sách của chính chúng tôi. Chưa có tài khoản người dùng nào đang dùng để nộp thật. Chỉ vì vậy tôi mới viết được bài này như một chuyện suýt xảy ra. Chúng tôi chỉ gặp may, chứ không phải cơ chế của chúng tôi chặn được. Nếu phát hiện muộn hơn một tháng, ghi chép này hẳn đã mở đầu bằng lời xin lỗi.
Từ đây mới là chỗ tôi thật sự muốn sửa. Chúng tôi chưa từng quyết xem phải làm gì khi phát hiện một lỗi chạm tới tiền. Trước đó vẫn là: sửa, đưa vào bản kế tiếp, ghi 1 dòng trong danh sách thay đổi. Đúng quy trình như khi sửa chữ nghĩa trên màn hình. Vì những phát hiện làm tiền dịch chuyển được đặt chung một kệ với mọi thứ khác, mức độ nghiêm túc khi xử lý lại tùy vào ai là người phát hiện.
Đây là điều chúng tôi chốt lại. Trước hết, đếm xem những bút toán nào bị ảnh hưởng, trong khoảng thời gian nào, rồi lập thành một danh sách. Làm trước khi sửa, vì một khi đã sửa thì không còn phân biệt được các bút toán bị ảnh hưởng nữa. Tiếp đó, chính chúng tôi báo cho người đang dùng tài khoản đó. Không phải là đã sửa xong, mà là những bút toán dạng này trong khoảng thời gian này không mang thuế, và đây là lý do. Với một phát hiện có tác động tới tiền, cái gì dịch chuyển và dịch chuyển bao nhiêu quan trọng hơn chuyện đã sửa hay chưa.
Có nên tự tay viết đè lên các bút toán cũ hay không là điều chúng tôi cân nhắc lâu nhất. Tính lại thì các con số sẽ đúng. Nhưng việc phần mềm lặng lẽ xê dịch con số trong những cuốn sổ đã khóa lại là một tai nạn thuộc loại khác. Chúng tôi chọn cách đưa ra danh sách để người dùng tự chọn. Có cả thao tác sửa hàng loạt, nhưng trước khi bấm, nó cho biết bao nhiêu bút toán và bao nhiêu tiền sẽ dịch chuyển. Những gì đã dịch chuyển đều có thể trả về như cũ.
Phía dựng phần mềm cũng được sửa. Nhánh theo quốc gia được đưa ra khỏi bên trong hàm. Cách tách thuế nay viết trong một bảng theo từng quốc gia: Nhật, Indonesia, Philippines. Khi gặp một quốc gia không có trong bảng, nó không trả về 0 — nó dừng ngay ở đó và báo lỗi. Số 0 mang gương mặt của một câu trả lời. Không trả về những giá trị giả vờ là câu trả lời mới là phần quan trọng nhất của lần sửa này.
Chúng tôi thêm một bài kiểm thử. Cùng một hóa đơn được lưu theo 2 đường, một lần đọc từ ảnh và một lần gõ tay, rồi bút toán sinh ra phải trùng khớp. Các bài kiểm thử trước đây chỉ xem mỗi đường có đúng khi đứng riêng hay không. Với một tính năng có 2 lối vào, việc mỗi đường đúng khi đứng riêng và việc cả 2 cho ra cùng một đáp án là 2 chuyện khác nhau.
Buổi chiều hôm phát hiện ra, trời đổ mưa rào. Tôi phải đứng chờ chừng 30 phút dưới mái hiên một cửa tiệm, vừa nhấp ly kopi susu gula aren vừa đếm những bút toán bị ảnh hưởng. Cơn mưa chiều Jakarta chặn kế hoạch của bạn lại, rồi đưa cho bạn thời gian. Con số 41 là thứ tôi mang ra khỏi 30 phút ấy.
Xin nói rõ cho chắc. Tôi không phải là chuyên gia thuế. Điều kiện để thuế đầu vào được khấu trừ, cũng như chứng từ cần có cho việc đó, đều do phía quy định định đoạt và vẫn đang thay đổi. Những gì viết ở đây là ghi chép về một khiếm khuyết trong phần mềm của chính chúng tôi, thứ đã không ghi nhận tiền thuế chút nào. Với quyết định kê khai thực tế, xin hãy xác nhận với người có chuyên môn.
Cuối cùng là một lời nhờ. Nếu bạn tìm thấy trong sổ sách KAZENA một bút toán không mang thuế đầu vào, xin hãy cho tôi biết, dù nó đã được sửa hay chưa. Chúng tôi sẽ đếm lại từ phía mình. Một sai sót chạm tới tiền, chừng nào chúng tôi còn im lặng, thì từ phía người dùng trông y hệt một con số đúng. Để được báo về những thứ không nhìn thấy, đáng lẽ chính chúng tôi phải viết ra trước rằng cần nhìn vào đâu.
Hãy cho chúng tôi biết bạn nghĩ gì
Cảm giác khi dùng các ứng dụng KAZENA, điều gì chúng tôi nên sửa, những tính năng bạn ước có — nếu bạn đang điều hành một doanh nghiệp nhỏ hoặc vừa, hay làm nghề tự do ở Indonesia hoặc Philippines, tiếng nói của bạn chính là điều chúng tôi mong được nghe nhất. Những tin nhắn bằng tiếng Indonesia hoặc tiếng Anh sẽ được trả lời bởi các đồng đội hiểu thị trường của bạn từ bên trong. KAZENA Books đã được ấn định ra mắt tại Philippines và Indonesia — và nếu công ty của bạn muốn đưa nó đến các quốc gia khác với tư cách đối tác, hoặc quan tâm đến việc mua lại hệ thống, chúng tôi cũng rất mong nhận được liên hệ từ bạn. Chúng tôi cũng nhận phát triển hệ thống mới. Chúng tôi là một đội nhỏ, nên không phải lúc nào cũng có thể bắt tay ngay — nhưng những gì chúng tôi xây dựng đều mang chất lượng made-in-Japan và luôn bám sát cách công việc kinh doanh thực sự vận hành ở đây, từng dự án một.
Liên hệ với chúng tôi