ความซับซ้อนของการคำนวณการหักเงินเดือนในแคนาดา
- สำนักงานสรรพากรแคนาดา (CRA) ออกเอกสาร "Payroll Deductions Formulas" เป็นประจำ โดยเอกสารนี้รวมสูตรคำนวณทั้งหมดของ Canada Pension Plan, Employment Insurance และภาษีเงินได้ที่ CRA จัดเก็บ
- Colin Percival ผู้ดำเนินธุรกิจขนาดเล็กในแคนาดาโดยไม่ใช้ผู้ให้บริการระบบเงินเดือนภายนอก ได้นำสูตรเหล่านี้ไปทำไว้เองในสเปรดชีต
- เช่นเดียวกับหลายแง่มุมของระบบภาษี ความซับซ้อนเพิ่มขึ้นเรื่อย ๆ และในปีนี้ Canada Pension Plan ไม่ได้มีแค่เบี้ยประกัน "พื้นฐาน" และ "เพิ่มเติม" แต่ยังมีเบี้ยประกัน "เพิ่มเติมลำดับที่สอง" อีกด้วย ทำให้เขาต้องเขียนสเปรดชีตใหม่ทั้งหมดตั้งแต่ต้น
การสร้างแผนภาพการพึ่งพากัน
- ผู้เขียนเอกสารมองข้ามรายละเอียดสำคัญของซอฟต์แวร์ไป นั่นคือค่าต่าง ๆ ต้องถูกคำนวณก่อนจึงจะนำไปใช้ได้ ส่งผลให้ต้องพลิกไปมาระหว่างส่วนต่าง ๆ ของเอกสารเพื่อดูว่าค่าแต่ละตัวที่ต้องคำนวณอยู่ตรงไหน
- เพื่อช่วยเรื่องนี้ Colin Percival จึงใช้ GraphViz วาดแผนภาพการพึ่งพากัน โดยกราฟมี 79 โหนด เริ่มจากค่าต่าง ๆ เช่น "จำนวนเงินสะสมบำนาญสูงสุดประจำปี" ($73200) ไปจนถึง "ยอดรวมการหักเงินเดือน"
- ในแผนภาพไม่มีการใส่สูตร แต่บันทึกไว้เพียงว่าทุกสูตรพึ่งพาค่าอื่นใดบ้าง เพื่อให้ผู้อ่านดูแล้วเข้าใจได้ง่ายว่าควรคำนวณอะไรก่อน
สมมติฐานเพื่อการทำให้ง่ายขึ้น
- เพื่อให้เรียบง่ายขึ้น Colin Percival สมมติว่าไม่ได้ครอบคลุมพนักงานที่รับค่าคอมมิชชัน พนักงานที่เข้าหรือออกจาก Canada Pension Plan และผู้ที่อาศัยอยู่ใน Quebec, Nova Scotia, Yukon และ Ontario ซึ่งแต่ละแห่งต่างก็มีความซับซ้อนทางภาษีของตนเอง
ความเห็นของ GN⁺
- บทความนี้แสดงให้เห็นอย่างชัดเจนว่าการคำนวณการหักเงินเดือนในแคนาดามีความซับซ้อนเพียงใด โดยเฉพาะความท้าทายที่เจ้าของธุรกิจขนาดเล็กต้องเผชิญ และแนวทางที่สร้างสรรค์ในการแก้ปัญหา
- การทำแผนภาพการพึ่งพากันเป็นเครื่องมือที่มีประโยชน์มากในการทำความเข้าใจและจัดการระบบที่ซับซ้อน และสามารถนำไปใช้แก้ปัญหาได้ทั้งในวิศวกรรมซอฟต์แวร์และสาขาอื่น ๆ
- บทความนี้สะท้อนความพยายามของเจ้าของธุรกิจที่ต้องการทำให้ความซับซ้อนของการคำนวณภาษีเข้าใจง่ายขึ้น และความพยายามนี้อาจสร้างแรงบันดาลใจให้ผู้ประกอบการรายอื่นได้ด้วย
1 ความคิดเห็น
ความเห็นจาก Hacker News
น่าเสียดายที่รัฐบาลไม่ได้เผยแพร่สูตรแบบเปิดในรูปแบบโค้ด
จากประสบการณ์ที่เคยทำบริษัทรับจ่ายเงินเดือนขนาดเล็กในแคนาดา ทุกครั้งที่กฎมีการอัปเดต ก็จะรันสคริปต์ดึงข้อมูลจากเครื่องคำนวณของ CRA เพื่อคำนวณเงินเดือนสำหรับหลายภูมิภาคและหลายช่วงรายได้ แล้วพิมพ์ผลด้วย rspec เพื่อทดสอบว่าปฏิบัติตามข้อกำหนดหรือไม่
ความซับซ้อนของกฎหมายภาษีมักวนเป็นวงจรดังนี้:
เคยสร้างสิ่งที่คล้ายกันให้ IRS เมื่อหลายปีก่อน
นี่เป็นกราฟที่แสดงให้เห็นว่าทำไมจึงมีผู้ให้บริการระบบเงินเดือนอยู่
ขอชื่นชมผู้เขียนที่ยืนกรานว่า CRA ควรเผยแพร่ implementation อ้างอิงของสูตรทั้งหมด
ในฝรั่งเศส กฎเหล่านี้มีให้ใช้งานทั้งในรูปแบบเว็บไซต์, API, แพ็กเกจ NPM และกฎดิบในภาษา publi.codes
ใช้ได้กับทุกคน ยกเว้นผู้ที่อาศัยอยู่ในควิเบก โนวาสโกเชีย ยูคอน และออนแทรีโอ ซึ่งคิดเป็นประมาณ 75% ของประชากรแคนาดา
ผมอาศัยอยู่ในสหรัฐ และนี่คือหนึ่งในเหตุผลหลักที่ผมไม่จ้างพนักงานให้ LLC ของตัวเอง
ไม่ว่าอัลกอริทึมไหน จะเป็นซอฟต์แวร์หรือไม่ก็ตาม สุดท้ายก็ถูกทำให้กลายเป็นสภาพที่ชวนสับสน ซึ่งสามารถเพิ่มความซับซ้อนเพื่อให้ได้ผลลัพธ์ที่ต้องการ