Độ phức tạp của việc tính các khoản khấu trừ lương ở Canada
- Cơ quan Thuế vụ Canada (CRA) thường xuyên phát hành tài liệu "Payroll Deductions Formulas". Tài liệu này bao gồm mọi công thức tính cho Kế hoạch Hưu trí Canada, bảo hiểm việc làm và thuế thu nhập mà CRA thu.
- Colin Percival, người điều hành một doanh nghiệp nhỏ ở Canada và không sử dụng nhà cung cấp dịch vụ tính lương bên ngoài, đã tự triển khai các công thức này trực tiếp trong bảng tính.
- Cũng như nhiều khía cạnh khác của hệ thống thuế, độ phức tạp ngày càng tăng; năm nay, Kế hoạch Hưu trí Canada không chỉ có mức phí "cơ bản" và mức phí "bổ sung" mà còn có cả mức phí "bổ sung thứ hai", khiến anh phải viết lại bảng tính từ đầu.
Tạo biểu đồ phụ thuộc
- Các tác giả của tài liệu đã bỏ sót một chi tiết quan trọng trong phần mềm: giá trị phải được tính ra trước khi có thể dùng. Vì vậy, khi đọc tài liệu, người ta phải liên tục lật qua lật lại để tìm xem từng giá trị cần tính nằm ở đâu.
- Để hỗ trợ việc này, Colin Percival đã dùng GraphViz để vẽ một biểu đồ phụ thuộc. Đồ thị có 79 nút, bắt đầu từ các giá trị như "mức thu nhập hưu trí tối đa hằng năm" ($73200) và đi đến "tổng khấu trừ lương".
- Biểu đồ không ghi các công thức mà chỉ ghi những giá trị khác mà mỗi công thức phụ thuộc vào, để người xem dễ xác định cần tính gì trước.
Các giả định đơn giản hóa
- Để đơn giản hóa, Colin Percival giả định không xử lý nhân viên nhận tiền boa, nhân viên bắt đầu hoặc rời khỏi Kế hoạch Hưu trí Canada, hay những người sống ở Quebec, Nova Scotia, Yukon và Ontario (mỗi nơi đều có độ phức tạp thuế riêng).
Ý kiến của GN⁺
- Bài viết này cho thấy rõ việc tính các khoản khấu trừ lương ở Canada phức tạp đến mức nào. Đặc biệt, nó nhấn mạnh những thách thức mà các chủ doanh nghiệp nhỏ phải đối mặt và cách tiếp cận sáng tạo để giải quyết chúng.
- Việc tạo biểu đồ phụ thuộc là một công cụ rất hữu ích để hiểu và quản lý các hệ thống phức tạp, và có thể áp dụng cho việc giải quyết vấn đề trong nhiều lĩnh vực chứ không chỉ riêng kỹ thuật phần mềm.
- Bài viết cho thấy nỗ lực của một chủ doanh nghiệp trong việc đơn giản hóa sự phức tạp của việc tính thuế, và những nỗ lực như vậy có thể truyền cảm hứng cho các chủ doanh nghiệp khác.
1 bình luận
Ý kiến trên Hacker News
Thật đáng tiếc khi chính phủ không cung cấp các công thức công khai ở dạng mã.
Từ kinh nghiệm từng vận hành một công ty bảng lương nhỏ ở Canada, mỗi khi quy tắc được cập nhật, tôi chạy một scraper cho công cụ tính của CRA để tính lương cho nhiều khu vực và mức lương khác nhau, rồi xuất kết quả bằng rspec để kiểm tra mức độ tuân thủ.
Độ phức tạp của luật thuế trải qua một chu trình lặp như sau:
Tôi từng làm một thứ tương tự cho IRS vài năm trước.
Đây là biểu đồ cho thấy vì sao các nhà cung cấp dịch vụ bảng lương tồn tại.
Xin dành lời khen cho tác giả ở điểm cho rằng CRA nên công bố bản triển khai tham chiếu cho mọi công thức.
Ở Pháp, các quy tắc này được cung cấp dưới dạng website, API, gói NPM và các quy tắc thô bằng ngôn ngữ publi.codes.
Áp dụng cho tất cả mọi người, ngoại trừ cư dân Quebec, Nova Scotia, Yukon và Ontario, nơi chiếm khoảng 75% dân số Canada.
Tôi sống ở Mỹ, và sự phức tạp này là một trong những lý do chính khiến tôi không tuyển nhân viên cho LLC của mình.
Bất kỳ thuật toán nào, dù là phần mềm hay không, cũng đều bị biến thành một trạng thái hỗn độn nơi có thể thêm độ phức tạp để đạt được kết quả mong muốn.