Kompleksitas perhitungan potongan gaji Kanada
- Badan Pajak Kanada (CRA) secara berkala menerbitkan dokumen "Payroll Deductions Formulas". Dokumen ini mencakup semua rumus perhitungan untuk Canada Pension Plan, employment insurance, dan pajak penghasilan yang dikumpulkan CRA.
- Colin Percival, yang menjalankan usaha kecil di Kanada tanpa menggunakan penyedia layanan penggajian eksternal, mengimplementasikan rumus-rumus ini langsung ke dalam spreadsheet.
- Seperti banyak aspek lain dari sistem perpajakan, kompleksitasnya terus meningkat. Tahun ini, Canada Pension Plan tidak hanya mencakup premi "dasar" dan premi "tambahan", tetapi juga premi "tambahan kedua", sehingga spreadsheet harus ditulis ulang dari awal.
Membuat bagan ketergantungan
- Para penulis dokumen tersebut mengabaikan detail penting dalam perangkat lunak, yaitu bahwa suatu nilai harus dihitung sebelum bisa digunakan. Akibatnya, saat membaca dokumen itu, orang harus bolak-balik mencari di mana setiap nilai yang perlu dihitung berada.
- Untuk membantu hal ini, Colin Percival menggunakan GraphViz untuk menggambar bagan ketergantungan. Grafik tersebut memiliki 79 node, dimulai dari nilai seperti "annual maximum pensionable earnings" ($73200) hingga "total payroll deductions".
- Bagan ini tidak menuliskan rumusnya, hanya mencatat nilai-nilai lain yang menjadi ketergantungan tiap rumus, sehingga orang yang melihatnya dapat dengan mudah memahami apa yang harus dihitung lebih dulu.
Asumsi yang disederhanakan
- Demi penyederhanaan, Colin Percival mengasumsikan bahwa ia tidak menangani karyawan yang dibayar berdasarkan komisi, karyawan yang masuk atau keluar dari Canada Pension Plan, atau orang yang tinggal di Quebec, Nova Scotia, Yukon, dan Ontario, yang masing-masing memiliki kompleksitas pajaknya sendiri.
Opini GN⁺
- Tulisan ini menunjukkan dengan baik betapa rumitnya perhitungan potongan gaji di Kanada. Secara khusus, tulisan ini menyoroti tantangan yang dihadapi pemilik usaha kecil dan pendekatan kreatif untuk mengatasinya.
- Membuat bagan ketergantungan adalah alat yang sangat berguna untuk memahami dan mengelola sistem yang kompleks, dan dapat diterapkan pada pemecahan masalah di berbagai bidang, bukan hanya rekayasa perangkat lunak.
- Tulisan ini memperlihatkan upaya seorang pemilik usaha untuk menyederhanakan kompleksitas perhitungan pajak, dan upaya seperti ini dapat menginspirasi pemilik usaha lainnya.
1 komentar
Komentar Hacker News
Sangat disayangkan pemerintah tidak menyediakan rumus terbuka dalam bentuk kode.
Dari pengalaman menjalankan perusahaan payroll kecil di Kanada, setiap kali aturannya diperbarui, saya menjalankan scraper terhadap kalkulator CRA untuk menghitung payroll di berbagai wilayah dan rentang gaji, lalu mencetak hasilnya dengan rspec untuk menguji kepatuhan.
Kompleksitas hukum pajak melalui siklus berulang seperti berikut:
Beberapa tahun lalu saya pernah membuat sesuatu yang mirip untuk IRS.
Ini adalah bagan yang menunjukkan alasan penyedia payroll itu ada.
Saya memuji penulis karena menekankan bahwa CRA harus memublikasikan implementasi referensi untuk semua rumus.
Di Prancis, aturan-aturan ini tersedia dalam bentuk situs web, API, paket NPM, dan aturan mentah dalam bahasa publi.codes.
Berlaku untuk semua orang kecuali penduduk Quebec, Nova Scotia, Yukon, dan Ontario, yang mencakup sekitar 75% populasi Kanada.
Saya tinggal di AS, tetapi kompleksitas seperti ini adalah salah satu alasan utama saya tidak mempekerjakan karyawan untuk LLC saya.
Algoritme apa pun, baik perangkat lunak maupun bukan, dapat dibuat menjadi keadaan membingungkan yang memungkinkan hasil yang diinginkan dengan menambahkan kompleksitas.