เมนู

เงินเดือน สกุลเงิน งวด ต้องระบุอย่างไร

เงินเดือนที่ไม่มีสกุลเงินและงวดเวลาไม่ใช่ตัวเลขที่สื่อความหมายได้ บทความนี้ชี้วิธีแยกค่าตอบแทนรวมออกจากค่าจ้างพื้นฐาน วิธีระบุรหัสสกุลเงิน และสิ่งที่ต้องบันทึกเมื่อต้องแปลงค่า

เผยแพร่เมื่อ

  • เงินเดือน
  • สกุลเงิน
  • ข้อมูลทดสอบ

เงินเดือน สกุลเงิน และงวดการจ่ายเป็นสามสิ่งที่ต้องอยู่ด้วยกันเสมอ ถ้าขาดอย่างใดอย่างหนึ่ง ตัวเลขนั้นจะสื่อความหมายไม่ได้เลย บทความนี้จะพาคุณดูว่าเหตุใดจึงเป็นเช่นนั้น ค่าตอบแทนรวมกับค่าจ้างพื้นฐานต่างกันตรงไหน และควรบันทึกอะไรไว้เมื่อข้อมูลต้องถูกแปลงเป็นอีกสกุลหนึ่ง

เพราะเหตุใดเงินเดือนต้องมีสกุลเงินกำกับเสมอ?

เพราะตัวเลขเปล่า ๆ ไม่บอกว่ามันคือหน่วยเงินของที่ใด และเพราะตัวเลขเดียวกันในสองสกุลเงินหมายถึงมูลค่าที่ต่างกันมาก การเห็นตัวเลขโดยไม่มีสกุลเงินจึงเท่ากับการอ่านข้อความที่ตัดตอนมาครึ่งหนึ่ง

ปัญหานี้ชัดขึ้นเมื่อข้อมูลไหลข้ามระบบ ระบบหนึ่งอาจเก็บเฉพาะตัวเลขเพราะคิดว่าสกุลเงินเป็นค่าคงที่ของทั้งระบบ แต่วันที่ต้องรับข้อมูลจากภายนอกเข้ามา สมมติฐานนั้นจะพังทันที

อีกเหตุผลหนึ่งคือการแสดงผล การแสดงตัวเลขโดยไม่ระบุสกุลเงินทำให้ผู้อ่านต้องเดา และการเดาของแต่ละคนจะต่างกัน ผู้ที่เดาผิดจะเข้าใจข้อมูลผิดโดยไม่รู้ตัว

สำหรับงานทดสอบ ชุดข้อมูลควรมีระเบียนที่ใช้หลายสกุลเงินปนกันโดยเจตนา เพื่อดูว่าเส้นทางที่แปลงค่าและเส้นทางที่แสดงผลทำงานถูกต้องหรือไม่

ค่าตอบแทนรวมกับค่าจ้างพื้นฐานต่างกันตรงไหน?

ค่าจ้างพื้นฐานคือส่วนที่จ่ายเป็นประจำตามสัญญาจ้าง ส่วนค่าตอบแทนรวมคือผลรวมของทุกอย่างที่ได้รับ ทั้งส่วนประจำ ส่วนที่ผันแปรตามผลงาน เงินช่วยเหลือต่าง ๆ และส่วนที่จ่ายให้ครั้งเดียว

ความต่างนี้สำคัญเพราะการนำสองตัวเลขมาเปรียบกันตรง ๆ มักให้ข้อสรุปที่ผิด ถ้าตัวเลขหนึ่งเป็นค่าจ้างพื้นฐานและอีกตัวเลขเป็นค่าตอบแทนรวม การเปรียบเทียบนั้นจะดูเหมือนฝ่ายหนึ่งได้มากกว่าอย่างชัดเจน ทั้งที่อาจไม่ได้เป็นเช่นนั้น

สิ่งที่ระบบควรทำคือเก็บช่องแยกกัน และระบุให้ชัดว่าตัวเลขที่แสดงคือตัวเลขชนิดใด การมีช่องเดียวที่ใช้ได้ทั้งสองความหมายจะทำให้ข้อมูลปนกันจนตรวจสอบย้อนกลับไม่ได้

เพราะเหตุใดจึงควรใช้รหัสสกุลเงินแทนชื่อเรียก?

ชื่อเรียกสกุลเงินในภาษาพูดมีความกำกวมสูง ชื่อเดียวกันอาจถูกใช้เรียกหน่วยเงินของคนละที่ และบางชื่อเป็นชื่อที่มีการใช้ในหลายบริบทจนแยกไม่ออกว่านิยมหมายถึงหน่วยใด

รหัสสกุลเงินที่เป็นมาตรฐานสาธารณะถูกออกแบบมาให้ไม่กำกวม จึงเหมาะกับการเก็บข้อมูลและการแลกเปลี่ยนระหว่างระบบ ชื่อเต็มหรือชื่อที่ใช้กันทั่วไปเหมาะกับการแสดงผลให้คนอ่าน ไม่เหมาะกับการเก็บ

หลักที่ใช้ได้คือเก็บรหัสเป็นค่าหลัก และเก็บชื่อที่ใช้แสดงผลเป็นอีกช่อง ถ้าจำเป็นต้องรองรับชื่อเดิมที่ผู้ใช้พิมพ์เข้ามา ก็ควรเก็บไว้เป็นช่องแยกที่ไม่ถูกใช้ในการคำนวณ

ข้อควรระวังอีกอย่างคือสกุลเงินที่มีการเปลี่ยนหน่วยหรือเลิกใช้ เมื่อเวลาผ่านไป ข้อมูลเก่าอาจอ้างถึงหน่วยที่ไม่ใช้แล้ว ระบบควรเก็บวันที่อ้างอิงของข้อมูลไว้ด้วย เพื่อให้รู้ว่าควรตีความตามกติกาของช่วงเวลาใด

เมื่อต้องแปลงค่าระหว่างสกุลเงินต้องบันทึกอะไร?

ต้องบันทึกอย่างน้อยสามอย่างคือ อัตราที่ใช้ วันที่ของอัตรานั้น และแหล่งที่มาของอัตรา ถ้าขาดอย่างใดอย่างหนึ่ง ผลลัพธ์จะตรวจสอบย้อนกลับไม่ได้ และจะกลายเป็นตัวเลขที่ไม่มีใครยืนยันได้ว่ามาจากไหน

อัตราแลกเปลี่ยนไม่ใช่ค่าคงที่ มันเปลี่ยนตลอดเวลา การแปลงโดยไม่บันทึกวันที่จึงเทียบเท่ากับการเดาว่าใช้ค่าของวันใด และเมื่อมีคนตรวจสอบภายหลังก็จะพบว่าตัวเลขสองชุดที่ควรตรงกันกลับไม่ตรง

สิ่งที่ระบบไม่ควรทำคือเก็บเฉพาะค่าที่แปลงแล้วและทิ้งค่าเดิม การทิ้งค่าเดิมทำให้เมื่ออัตราที่ใช้ถูกแก้ไข ข้อมูลจะไม่สามารถคำนวณใหม่ได้ และการแก้ไขจะต้องทำด้วยมือทีละระเบียน

สำหรับชุดข้อมูลทดสอบ ควรมีระเบียนที่ค่าเดิมกับค่าที่แปลงแล้วไม่สอดคล้องกันโดยเจตนา เพื่อดูว่าระบบตรวจจับความไม่สอดคล้องนี้ได้หรือไม่

ขอบเขตความเป็นส่วนตัวของข้อมูลค่าตอบแทนเป็นอย่างไร?

ข้อมูลค่าตอบแทนเป็นข้อมูลอ่อนไหวกว่าข้อมูลทักษะและประวัติงาน เพราะมันสะท้อนสถานะของบุคคลได้ค่อนข้างตรง และการรั่วไหลของมันสร้างความเสียหายได้ทันที

ด้วยเหตุนี้ ระบบทดสอบจึงไม่ควรมีข้อมูลค่าตอบแทนของคนจริงอยู่เลย แม้จะเป็นข้อมูลของพนักงานในองค์กรเดียวกัน เพราะไม่มีเหตุผลทางวิศวกรรมใดที่ต้องใช้ค่าจริงในการทดสอบการคำนวณ

หลักที่ควรยึดคือใช้ค่าที่สร้างขึ้นซึ่งมีรูปแบบเหมือนของจริง แต่ไม่ใช่ค่าของใคร ค่าที่สร้างขึ้นยังควรครอบคลุมช่วงที่กว้างและสกุลเงินที่หลากหลาย เพื่อให้ทดสอบเส้นทางที่ต่างกันได้ครบ

นอกจากนั้นควรกำหนดให้ชัดว่าข้อมูลค่าตอบแทนในระบบทดสอบจะถูกลบเมื่อใด และใครมีสิทธิ์เข้าถึง เพราะข้อมูลที่ไม่มีกำหนดลบจะค้างอยู่ตลอดไปโดยไม่มีใครรับผิดชอบ

สำหรับนักพัฒนา: ช่องจำนวนเงินและการปัดเศษ

ข้อแรกคือเก็บจำนวนเงินเป็นชนิดข้อมูลที่แม่นยำ ไม่ใช่จำนวนทศนิยมทั่วไป เพราะการคำนวณทศนิยมจะสะสมความคลาดเคลื่อน และความคลาดเคลื่อนนั้นจะโผล่ตอนรวมยอด

ข้อที่สองคือกำหนดสกุลเงินของทุกช่องให้ชัด และห้ามตีความช่องที่ไม่มีสกุลเงินว่าเป็นสกุลเงินตั้งต้นของระบบ เพราะการตีความแบบนั้นจะทำให้ข้อมูลจากภายนอกถูกอ่านผิดอย่างเงียบ ๆ

ข้อที่สามคือกำหนดกติกาการปัดเศษไว้ที่เดียว ไม่กระจายไปหลายจุด เพราะการปัดเศษคนละแบบในคนละจุดจะทำให้ยอดรวมไม่ตรงกับผลบวกของรายการ

ข้อที่สี่คือแยกช่องค่าจ้างพื้นฐานออกจากช่องค่าตอบแทนรวม และห้ามให้หน้าจอแสดงค่าหนึ่งโดยใช้ป้ายของอีกค่าหนึ่ง ซึ่งเป็นข้อบกพร่องที่ผู้ใช้มักไม่ทันสังเกต

ข้อที่ห้าคือทดสอบกับระเบียนที่ไม่มีข้อมูลค่าตอบแทนเลย เพราะช่องว่างเป็นกรณีปกติในข้อมูลจริง และเป็นกรณีที่การคำนวณมักพังด้วยการหารด้วยศูนย์หรือค่าที่ไม่กำหนด

หลักที่ควรกำหนดเมื่อเก็บช่องจำนวนเงิน:

  • ข้อแรกคือเก็บจำนวนเงินเป็นชนิดข้อมูลที่แม่นยำ ไม่ใช่จำนวนทศนิยมทั่วไป
  • ข้อที่สองคือกำหนดสกุลเงินของทุกช่องให้ชัด และห้ามตีความช่องที่ไม่มีสกุลเงินว่าเป็นสกุลเงินตั้งต้นของระบบ
  • ข้อที่สามคือกำหนดกติกาการปัดเศษไว้ที่เดียว ไม่กระจายไปหลายจุด
  • ข้อที่สี่คือแยกช่องค่าจ้างพื้นฐานออกจากช่องค่าตอบแทนรวม
  • ข้อที่ห้าคือทดสอบกับระเบียนที่ไม่มีข้อมูลค่าตอบแทนเลย

ขั้นตอนถัดไป

เริ่มจากตรวจว่าช่องจำนวนเงินในระบบของคุณมีสกุลเงินกำกับครบทุกช่องหรือไม่ ถ้ามีช่องใดที่ไม่มี ให้เติมก่อน เพราะเป็นช่องที่ทำให้ข้อมูลทั้งหมดเชื่อถือได้หรือไม่

จากนั้นเปิดเครื่องมือสร้างโปรไฟล์อาชีพสำหรับทดสอบของเว็บไซต์นี้เพื่อสร้างระเบียนที่มีทั้งสกุลเงินและงวดการจ่ายระบุชัดเจน และถ้าคุณกำลังออกแบบชุดทดสอบของฟอร์มรับสมัครอยู่ ลองอ่านต่อที่แบบฟอร์มสมัครงาน กรณีทดสอบ ควรครอบคลุมอะไร หรือกลับไปดูภาพรวมที่ข้อมูลโปรไฟล์อาชีพ ทดสอบอย่างไร และถ้าต้องใช้ชุดจำนวนเงินและสกุลเงินเดิมซ้ำหลายรอบ วิธีจัดเก็บมีอธิบายในวิธีสร้างข้อมูลสำหรับการทดสอบ

จำนวนเงินและอัตราที่กล่าวถึงในบทความนี้เป็นค่าสาธิตที่สร้างขึ้นเพื่อการทดสอบเท่านั้น ไม่ได้มาจากสัญญาจ้างหรือค่าตอบแทนของบุคคลใด และไม่ควรใช้เป็นข้อมูลอ้างอิงเรื่องค่าจ้างของใคร

อ่านต่อ

บทความเกี่ยวกับ เครื่องมือสร้างเรซูเม่และข้อมูลงานปลอม