เทมเพลตข้อมูลการประมวลผลเงินเดือนของคุณ
เทมเพลตข้อมูลการประมวลผลเงินเดือนของคุณ
- ฟิลด์ข้อมูลที่ปรับให้เหมาะกับการวิเคราะห์เงินเดือน
- ติดตามกิจกรรมตลอดวงจรเพื่อทำแผนที่กระบวนการ
- คำแนะนำโดยละเอียดสำหรับดึงข้อมูลเงินเดือนจาก Oracle HCM Cloud
คุณลักษณะของการประมวลผลเงินเดือน
| ชื่อ | คำอธิบาย | ||
|---|---|---|---|
| การอัปเดตข้อมูลครั้งล่าสุด LastDataUpdate | เวลาที่แก้ไขระเบียนในฐานข้อมูลต้นทางครั้งล่าสุด. | ||
| คำอธิบาย ระบุความใหม่ของข้อมูลที่ใช้วิเคราะห์ ซึ่งต่างจากการประทับเวลาของเหตุการณ์ เพราะแสดงเวลาล่าสุดที่กระบวนการ ETL หรือการอัปเดตระบบแก้ไขแถวในฐานข้อมูล ใช้ตรวจสอบความเป็นปัจจุบันของข้อมูลและวิเคราะห์ปัญหาความล่าช้าในการดึงข้อมูล เหตุผลที่สำคัญ ช่วยให้นักวิเคราะห์ทราบว่ากำลังดูข้อมูลแบบเรียลไทม์หรือข้อมูลเก่า. แหล่งข้อมูล คอลัมน์ LAST_UPDATE_DATE ซึ่งพบได้ในตาราง Oracle HCM เกือบทั้งหมด. ตัวอย่าง 2023-10-02T12:00:00Z2023-10-06T01:00:00Z | |||
| ชื่อกิจกรรม ActivityName | ขั้นตอนหรือเหตุการณ์ที่เกิดขึ้นในรอบการจ่ายเงินเดือน. | ||
| คำอธิบาย แอตทริบิวต์นี้เก็บชื่อเหตุการณ์ที่เกิดขึ้นในกระบวนการจ่ายเงินเดือน ตัวอย่างเช่น 'ส่งใบบันทึกเวลาแล้ว' 'เริ่มคำนวณเงินเดือน' และ 'จ่ายเงินแล้ว'. เป็นมิติหลักสำหรับค้นหากระบวนการและวิเคราะห์รูปแบบ ใน Oracle HCM Cloud มักได้ข้อมูลนี้จาก Action Type หรือ Action Status ในตารางการดำเนินการจ่ายเงินเดือน. เหตุผลที่สำคัญ ระบุว่าเกิดอะไรขึ้น เพื่อสร้างแผนที่กระบวนการขึ้นใหม่ได้. แหล่งข้อมูล ได้จากรหัส ACTION_TYPE ใน PAY_PAYROLL_ACTIONS หรือการเปลี่ยนสถานะในบันทึกการตรวจสอบ. ตัวอย่าง เริ่มคำนวณเงินเดือนอนุมัติใบบันทึกเวลาแล้วสร้างรายการโอนเงินผ่านธนาคารแล้วพบข้อยกเว้นจากการตรวจสอบ | |||
| ระบบต้นทาง SourceSystem | ชื่อระบบต้นทางของเหตุการณ์. | ||
| คำอธิบาย ระบุซอฟต์แวร์หรือโมดูลที่สร้างข้อมูลรายการนี้ สำหรับกระบวนการนี้ ค่าหลักคือ 'Oracle HCM Cloud Payroll' อย่างไรก็ตาม ในระบบที่มีหลายส่วน ค่านี้อาจใช้แยกเครื่องมือคำนวณเงินเดือนหลัก โมดูลบันทึกเวลาและแรงงาน หรืออินเทอร์เฟซธนาคารภายนอก. เหตุผลที่สำคัญ ให้ข้อมูลที่มาของข้อมูล โดยเฉพาะเมื่อนำข้อมูลจากระบบย่อยด้านบันทึกเวลาหรือธนาคารมาเชื่อมต่อ. แหล่งข้อมูล กำหนดค่าไว้ในขั้นตอนดึงข้อมูล หรือได้มาจาก ID ของอินเทอร์เฟซ. ตัวอย่าง Oracle HCM Cloud PayrollOracle Time and Laborอินเทอร์เฟซธนาคารภายนอก | |||
| ระเบียนเงินเดือน PayrollRecord | รหัสเฉพาะที่ใช้ระบุพนักงานในงวดการจ่ายเงินเดือนที่กำหนด. | ||
| คำอธิบาย ระเบียนเงินเดือนทำหน้าที่เป็นรหัสกรณีหลักสำหรับการวิเคราะห์ process mining โดยสร้างจากการนำรหัสการจ้างงานของพนักงานและรหัสงวดการจ่ายเงินเดือนมาต่อกัน หรือใช้คีย์เฉพาะที่รวมข้อมูลทั้งสองรายการ. แอตทริบิวต์นี้ใช้จัดกลุ่มกิจกรรมทั้งหมดที่เกี่ยวข้องกับการจ่ายเงินให้พนักงานหนึ่งคนในรอบที่กำหนด ตั้งแต่ส่งใบบันทึกเวลาครั้งแรกจนถึงโอนเงินเข้าธนาคารและยื่นภาษีขั้นสุดท้าย จึงช่วยแยกการจ่ายเงินให้พนักงานคนเดิมในเดือนมกราคมกับเดือนกุมภาพันธ์ออกจากกันได้. เหตุผลที่สำคัญ ใช้เป็น Case ID เพื่อรวมเหตุการณ์ที่กระจัดกระจายให้เป็นอินสแตนซ์กระบวนการเดียวสำหรับการวิเคราะห์. แหล่งข้อมูล สร้างจาก PAY_ASSIGNMENT_ACTIONS หรือจากการรวม Person Number กับ Payroll Period Name ใน Oracle HCM. ตัวอย่าง EMP1001-2023-M01EMP5992-2023-W42300000018273645US-NY-A123-JAN23 | |||
| เวลาที่เกิดเหตุการณ์ EventTimestamp | วันที่และเวลาที่กิจกรรมเกิดขึ้นอย่างแม่นยำ. | ||
| คำอธิบาย บันทึกเวลาที่กิจกรรมเกิดขึ้นอย่างเจาะจง ข้อมูลนี้จำเป็นต่อการคำนวณระยะเวลา เวลารอ และการระบุคอขวด. สำหรับขั้นตอนอัตโนมัติ จะใช้เวลาที่ระบบดำเนินการ ส่วนขั้นตอนที่ทำด้วยตนเอง เช่น การอนุมัติ จะใช้เวลาที่ผู้ใช้ดำเนินการตามบันทึกในรายการธุรกรรม. เหตุผลที่สำคัญ จำเป็นต่อการเรียงเหตุการณ์ตามลำดับเวลาและคำนวณ KPI ที่อิงกับเวลา. แหล่งข้อมูล คอลัมน์ CREATION_DATE หรือ ACTION_DATE ในตารางธุรกรรมที่เกี่ยวข้อง เช่น PAY_ACTION_INFORMATION. ตัวอย่าง 2023-10-01T08:30:00Z2023-10-01T14:15:22Z2023-10-05T09:00:00Z | |||
| กลุ่มข้อมูลด้านกฎหมาย LegislativeDataGroup | แบ่งข้อมูลเงินเดือนตามประเทศหรือข้อกำหนดของแต่ละเขตอำนาจ. | ||
| คำอธิบาย ใน Oracle HCM Cloud กลุ่มข้อมูลด้านกฎหมาย (LDG) ใช้แบ่งข้อมูลเงินเดือนและข้อมูลที่เกี่ยวข้อง โดยทั่วไปจะตรงกับกฎหมายของประเทศหรือเขตพื้นที่ใดเขตพื้นที่หนึ่ง แอตทริบิวต์นี้จำเป็นต่อการกรองผลวิเคราะห์กระบวนการตามประเทศ เช่น เงินเดือนในสหรัฐฯ หรือสหราชอาณาจักร และมักจับคู่กับแอตทริบิวต์ทั่วไป Country. เหตุผลที่สำคัญ กฎการปฏิบัติตามข้อกำหนดและขั้นตอนการทำงานมักแตกต่างกันมากในแต่ละเขตอำนาจ. แหล่งข้อมูล ตาราง PAY_ALL_PAYROLLS_F ที่เชื่อมกับคำจำกัดความของกลุ่มข้อมูลด้านกฎหมาย. ตัวอย่าง กลุ่มข้อมูลด้านกฎหมายของสหรัฐฯLDG ของสหราชอาณาจักรเงินเดือนของฝรั่งเศส | |||
| กลุ่มผู้รับเงิน PayGroup | การจัดกลุ่มพนักงานตามตรรกะเพื่อประมวลผลเงินเดือน. | ||
| คำอธิบาย ระบุคำจำกัดความของเงินเดือนที่พนักงานสังกัด เช่น 'รายสัปดาห์ ฝ่ายผลิต' หรือ 'รายเดือน ฝ่ายองค์กร' แอตทริบิวต์นี้เป็นข้อมูลหลักของแดชบอร์ดเกือบทั้งหมด เพราะช่วยเปรียบเทียบผลการดำเนินงานระหว่างรอบและความถี่ในการจ่ายเงินเดือน. เหตุผลที่สำคัญ ออบเจ็กต์การกำหนดค่าหลักที่ใช้จัดตารางการจ่ายเงินเดือน. แหล่งข้อมูล ตาราง PAY_ALL_PAYROLLS_F (ชื่อเงินเดือน). ตัวอย่าง สหรัฐฯ จ่ายเดือนละสองครั้งสหราชอาณาจักร จ่ายรายเดือนสหภาพแรงงาน จ่ายรายสัปดาห์ | |||
| กำหนดเวลาประมวลผล SLA SlaProcessingDeadline | วันที่และเวลาที่ต้องดำเนินการจ่ายเงินให้เสร็จ. | ||
| คำอธิบาย บันทึกกำหนดเวลาตามสัญญาหรือกฎหมายสำหรับการจ่ายเงินเดือน โดยนำแอตทริบิวต์นี้ไปเปรียบเทียบกับเวลาประทับ 'Payment Executed' ใช้คำนวณ KPI 'การปฏิบัติตามกำหนดเวลาประมวลผล SLA' และระบุกลุ่มผู้รับเงินที่เสี่ยงต่อความล่าช้า. เหตุผลที่สำคัญ เกณฑ์หลักที่ใช้วัดว่ากระบวนการสำเร็จหรือล้มเหลวด้านเวลา. แหล่งข้อมูล โดยทั่วไปเป็นฟิลด์ที่กำหนดค่าไว้ (DFF) ในคำจำกัดความของเงินเดือน หรือคำนวณจากวันที่เช็คหักจำนวนวัน X. ตัวอย่าง 2023-10-28T17:00:00Z2023-11-30T17:00:00Z | |||
| ชื่อแผนก DepartmentName | หน่วยงานที่พนักงานสังกัด. | ||
| คำอธิบาย ระบุแผนกที่รับผิดชอบพนักงานในระเบียนเงินเดือน แอตทริบิวต์นี้สำคัญต่อแดชบอร์ด 'ประสิทธิภาพการอนุมัติใบบันทึกเวลา' เมื่อนักวิเคราะห์แยกข้อมูลตามแผนก จะเห็นได้ว่าหน่วยธุรกิจใดอนุมัติใบบันทึกเวลาล่าช้าเป็นประจำ จนทำให้การประมวลผลเงินเดือนโดยรวมล่าช้า. เหตุผลที่สำคัญ ช่วยวิเคราะห์หาสาเหตุหลักของความล่าช้าที่เกี่ยวข้องกับการอนุมัติของผู้จัดการ. แหล่งข้อมูล ได้มาจากระเบียนการมอบหมายงานของพนักงานที่มีผลในช่วงเวลาประมวลผลเงินเดือน. ตัวอย่าง ฝ่ายขายอเมริกาเหนือวิศวกรรมทรัพยากรบุคคลโลจิสติกส์ | |||
| ชื่อรอบเงินเดือน PayrollPeriodName | ชื่อช่วงเวลาที่กำหนดสำหรับรอบประมวลผลเงินเดือน. | ||
| คำอธิบาย ระบุรอบที่ต้องการ เช่น 'รายเดือน มกราคม 2024' หรือ 'รายสัปดาห์ งวดที่ 42' ข้อมูลนี้จำเป็นต่อ 'ตัวติดตามการปฏิบัติตามกำหนดเวลา SLA' ช่วยจัดกลุ่มเคสของพนักงานแต่ละรายตามรอบประมวลผล เพื่อจัดทำรายงานภาพรวม. เหตุผลที่สำคัญ จำเป็นต่อการวิเคราะห์ระดับชุดประมวลผลและติดตาม SLA. แหล่งข้อมูล ตาราง PAY_TIME_PERIODS หรือชื่อช่วงเวลาในคำจำกัดความของเงินเดือน. ตัวอย่าง รายเดือน 10 ปี 2023รายสัปดาห์ 42 ปี 2023รอบจ่ายโบนัสเดือนธันวาคม 2023 | |||
| เป็นการแก้ไขด้วยตนเองหรือไม่ IsManualCorrection | ตัวบ่งชี้ว่ากิจกรรมนั้นมีการดำเนินการด้วยตนเองหรือไม่. | ||
| คำอธิบาย แฟล็กแบบบูลีนที่ตั้งค่าเป็น true สำหรับกิจกรรม เช่น 'ดำเนินการแก้ไขข้อมูล' หรือ 'แก้ไขระเบียนเงินเดือน' ใช้คำนวณ KPI 'อัตราการแก้ไขข้อมูลด้วยตนเอง' และ 'อัตราความถูกต้องของเงินเดือนตั้งแต่ครั้งแรก'. เหตุผลที่สำคัญ ใช้แยกการประมวลผลอัตโนมัติตั้งแต่ต้นจนจบออกจากการแก้ไขงานด้วยตนเอง. แหล่งข้อมูล ได้มาจากชื่อกิจกรรมหรือประเภทการดำเนินการที่ระบุการปรับแก้ เช่น QuickPay หรือการปรับยอดคงเหลือ. ตัวอย่าง truefalse | |||
| ผู้ใช้ที่ดำเนินการ ProcessingUser | ID ผู้ใช้หรือชื่อของผู้ที่ทำกิจกรรม. | ||
| คำอธิบาย บันทึกตัวตนของผู้เชี่ยวชาญด้านเงินเดือน ผู้จัดการ หรือบัญชีระบบที่เริ่มกิจกรรม ข้อมูลนี้ใช้กับแดชบอร์ด 'การกระจายภาระงานของผู้เชี่ยวชาญด้านเงินเดือน' ช่วยระบุคอขวดด้านทรัพยากรและความต้องการฝึกอบรมของทีมเงินเดือน. เหตุผลที่สำคัญ ช่วยวิเคราะห์ประสิทธิภาพการทำงานของทรัพยากรและปรับสมดุลภาระงาน. แหล่งข้อมูล คอลัมน์ CREATED_BY หรือ LAST_UPDATED_BY ในตารางธุรกรรม. ตัวอย่าง ผู้ดูแลระบบj.smithpayroll_batch_userm.doe | |||
| ยอดเงินเดือนรวมก่อนหัก GrossPayAmount | ยอดเงินเดือนรวมก่อนหักที่คำนวณได้สำหรับงวดนั้น. | ||
| คำอธิบาย แสดงมูลค่าเงินเดือนรวมก่อนหักที่คำนวณได้ในรอบนั้น ใช้ในการวิเคราะห์ 'ความแม่นยำในการคำนวณภาษีและสวัสดิการ' และ 'การเชื่อมโยงค่าตอบแทนจูงใจ' ช่วยให้นักวิเคราะห์เปรียบเทียบการจ่ายเงินมูลค่าสูงกับระยะเวลาประมวลผลหรืออัตราข้อผิดพลาด. เหตุผลที่สำคัญ ให้บริบทด้านการเงินสำหรับการวิเคราะห์ process mining. แหล่งข้อมูล ตาราง PAY_RUN_RESULT_VALUES ซึ่งรวมยอดตามยอดเงินเดือนรวมก่อนหัก. ตัวอย่าง 5000.002350.5010000.00 | |||
| เขตอำนาจด้านภาษี TaxJurisdiction | รัฐ จังหวัด หรือท้องถิ่นที่ใช้ยื่นภาษีโดยเฉพาะ. | ||
| คำอธิบาย ระบุหน่วยงานภาษีหลักที่เกี่ยวข้องกับระเบียนเงินเดือน เช่น 'CA' สำหรับแคลิฟอร์เนีย หรือ 'NY' สำหรับนิวยอร์ก ข้อมูลนี้ใช้กับแดชบอร์ด 'ระยะเวลาประมวลผลการปฏิบัติตามข้อกำหนดด้านภาษี' ช่วยตรวจสอบว่ากระบวนการคำนวณและยื่นภาษีในบางพื้นที่มีความซับซ้อนหรือใช้เวลานานกว่าพื้นที่อื่นหรือไม่. เหตุผลที่สำคัญ แยกผลการดำเนินงานตามความซับซ้อนของข้อกำหนด. แหล่งข้อมูล ได้มาจากบัตรภาษีของพนักงานหรือที่อยู่สถานที่ทำงาน. ตัวอย่าง CA-แคลิฟอร์เนียNY-นิวยอร์กTX-เท็กซัสรัฐบาลกลาง-สหรัฐฯ | |||
| จำนวนครั้งที่ดูตัวอย่างผลลัพธ์ PreviewIterationCount | จำนวนครั้งที่ดูตัวอย่างผลลัพธ์ก่อนสรุปขั้นตอน. | ||
| คำอธิบาย ตัวนับที่เพิ่มขึ้นทุกครั้งที่เกิดกิจกรรม 'ดูตัวอย่างผลลัพธ์เงินเดือน' ในเคสเดียวกัน เป็นตัวชี้วัดโดยตรงสำหรับแดชบอร์ด 'ติดตามจำนวนครั้งที่ดูตัวอย่างเงินเดือน' ซึ่งแสดงปริมาณงานที่ต้องทำซ้ำหรือความลังเลก่อนอนุมัติ. เหตุผลที่สำคัญ ใช้วัดประสิทธิภาพของขั้นตอนตรวจสอบความถูกต้อง. แหล่งข้อมูล คำนวณระหว่างการแปลงข้อมูล โดยนับจำนวนครั้งที่กิจกรรมที่กำหนดเกิดขึ้นในแต่ละ Case ID. ตัวอย่าง 1350 | |||
| ประเภทข้อยกเว้นจากการตรวจสอบ AuditExceptionType | ประเภทข้อผิดพลาดหรือคำเตือนที่พบระหว่างการตรวจสอบ. | ||
| คำอธิบาย จัดประเภทปัญหาที่พบในกิจกรรม 'พบข้อยกเว้นจากการตรวจสอบ' เช่น 'ยอดสุทธิที่ต้องจ่ายติดลบ' หรือ 'ไม่มีเลขประจำตัวผู้เสียภาษี' แอตทริบิวต์นี้ช่วยให้แดชบอร์ด 'วิเคราะห์ข้อยกเว้นและการแก้ไขจากการตรวจสอบ' ระบุปัญหาคุณภาพข้อมูลที่พบบ่อยได้. เหตุผลที่สำคัญ จำเป็นต่อการวิเคราะห์หาสาเหตุหลักของการทำงานซ้ำ. แหล่งข้อมูล คอลัมน์ Message หรือ Error Code ในบันทึกกระบวนการเงินเดือนหรือรายงานข้อยกเว้น. ตัวอย่าง ยอดสุทธิที่ต้องจ่ายติดลบไม่มี SSNรายละเอียดบัญชีธนาคารไม่ถูกต้องเกินขีดจำกัดชั่วโมงทำงานล่วงเวลา | |||
| ประเภทพนักงาน EmployeeType | การจัดประเภทพนักงาน เช่น พนักงานเงินเดือน พนักงานรายชั่วโมง หรือผู้รับจ้าง. | ||
| คำอธิบาย จัดประเภทระเบียนพนักงาน ข้อมูลนี้สำคัญต่อแดชบอร์ด 'ความล่าช้าในการเผยแพร่สลิปเงินเดือนดิจิทัล' เพราะพนักงานแต่ละประเภทอาจมีกฎหรือระดับความเร่งด่วนในการประมวลผลต่างกัน ช่วยกรองผลวิเคราะห์เพื่อเปรียบเทียบประสิทธิภาพของกระบวนการในกลุ่มพนักงานแต่ละประเภท. เหตุผลที่สำคัญ พนักงานแต่ละประเภทมักผ่านกระบวนการคนละรูปแบบ. แหล่งข้อมูล หมวดหมู่การมอบหมายงานหรือเงื่อนไขการจ้างงานใน PER_ALL_ASSIGNMENTS_M. ตัวอย่าง พนักงานประจำเงินเดือนพนักงานรายชั่วโมงนอกเวลาผู้รับจ้างผู้บริหาร | |||
| แฟล็กการเปลี่ยนแปลงย้อนหลัง RetroactiveChangeFlag | ระบุว่ารอบประมวลผลเงินเดือนมีการจ่ายย้อนหลังหรือไม่. | ||
| คำอธิบาย ตัวบ่งชี้แบบบูลีนที่เป็น true เมื่อมีการประมวลผลรายการ 'Retropay' ในระเบียนนี้ ช่วยอธิบายระยะเวลาประมวลผลที่นานขึ้นหรือข้อยกเว้นจากการตรวจสอบในการวิเคราะห์ 'เปรียบเทียบรูปแบบเส้นทางกระบวนการ' การเปลี่ยนแปลงย้อนหลังมักทำให้ต้องคำนวณข้อมูลของงวดก่อนหน้าใหม่ ซึ่งมีความซับซ้อน. เหตุผลที่สำคัญ ช่วยระบุเคสที่ซับซ้อนและต้องใช้เวลาประมวลผลนานตามลักษณะงาน. แหล่งข้อมูล มีรายการองค์ประกอบ 'Retropay' ใน PAY_ELEMENT_ENTRIES. ตัวอย่าง truefalse | |||
| สถานะ SLA SlaStatus | สถานะการปฏิบัติตาม SLA เช่น ตามกำหนดหรือไม่ทันกำหนด. | ||
| คำอธิบาย ได้จากการเปรียบเทียบเวลาประทับ 'Payment Executed' กับ 'SLA Processing Deadline' ค่าอาจเป็น 'ตรงเวลา' 'เสี่ยงล่าช้า' หรือ 'เกินกำหนด' ช่วยให้รายงานของ 'ตัวติดตามการปฏิบัติตามกำหนดเวลา SLA' อ่านง่ายขึ้น โดยจัดกลุ่มเคสตามผลการดำเนินงาน. เหตุผลที่สำคัญ เปลี่ยนการเปรียบเทียบเวลาที่ซับซ้อนให้เป็นหมวดหมู่ที่นำไปใช้ได้. แหล่งข้อมูล ตรรกะคำนวณที่เปรียบเทียบการประทับเวลาของเหตุการณ์กับกำหนดเวลา SLA ตัวอย่าง ตามกำหนดเกินกำหนดใกล้เกินกำหนด | |||
กิจกรรมในการประมวลผลเงินเดือน
| กิจกรรม | คำอธิบาย | ||
|---|---|---|---|
| คำนวณ Prepayments แล้ว | ดำเนินการ Prepayments เพื่อจ่ายเงินสุทธิให้พนักงานตามวิธีรับเงินที่เลือก เช่น เช็คหรือ EFT ขั้นตอนนี้ยืนยันว่าจำนวนเงินที่คำนวณไว้สามารถจ่ายได้จริง. | ||
| เหตุผลที่สำคัญ เป็นขั้นตอนเชื่อมระหว่างการคำนวณกับการจ่ายเงิน หากเกิดข้อผิดพลาด มักเป็นเพราะไม่มีข้อมูลธนาคารหรือใช้วิธีรับเงินที่ไม่ถูกต้อง. แหล่งข้อมูล ค้นหาใน PAY_PAYROLL_ACTIONS โดย ACTION_TYPE เป็น P (Prepayments) และสถานะเป็น Complete. บันทึก บันทึกเมื่อการดำเนินการ Prepayments เสร็จสมบูรณ์ ประเภทเหตุการณ์ explicit | |||
| คำนวณเงินเดือนเสร็จแล้ว | กระบวนการ Calculate Payroll เสร็จสมบูรณ์ รวมถึงการคำนวณจากยอดก่อนหักเป็นยอดสุทธิ เหตุการณ์นี้แสดงว่าระบบคำนวณรายได้ รายการหัก และภาษีของการจ้างงานแล้ว. | ||
| เหตุผลที่สำคัญ เป็นหมุดหมายสำคัญที่แสดงว่าข้อมูลพร้อมตรวจสอบ หากใช้เวลานานในขั้นตอนนี้ อาจเกิดจากประสิทธิภาพของระบบหรือ fast formula ที่ซับซ้อน. แหล่งข้อมูล ค้นหาใน PAY_PAYROLL_REL_ACTIONS โดยเชื่อมกับ PAY_PAYROLL_ACTIONS ซึ่ง ACTION_TYPE เป็น R หรือ Q และ ACTION_STATUS เปลี่ยนเป็น C (Complete). บันทึก บันทึกเมื่อสถานะการดำเนินการ Payroll Run เปลี่ยนเป็น Complete ประเภทเหตุการณ์ explicit | |||
| ดำเนินการจ่ายเงินแล้ว | ยืนยันขั้นสุดท้ายว่าดำเนินการจ่ายเงินแล้ว ใน Oracle เหตุการณ์นี้สอดคล้องกับการเสร็จสิ้นเวิร์กโฟลว์การจ่ายเงินหรือการกระทบยอดใน Cash Management. | ||
| เหตุผลที่สำคัญ เป็นเวลาหลักที่ใช้วัดการปฏิบัติตาม SLA เพื่อดูว่าพนักงานได้รับเงินตรงเวลาหรือไม่. แหล่งข้อมูล อนุมานได้จาก Effective Date ของการดำเนินการ Bank Transfer หรือดูจากบันทึกการกระทบยอดใน Cash Management โดยตรง (CE_STATEMENT_LINES). บันทึก บันทึกจากวันที่มีผลของการดำเนินการจ่ายเงินหรือเหตุการณ์กระทบยอด ประเภทเหตุการณ์ explicit | |||
| เริ่มคำนวณเงินเดือน | เริ่มกระบวนการจ่ายเงินเดือนหลักสำหรับข้อกำหนดและงวดการจ่ายเงินเดือนที่ระบุ เป็นจุดเปลี่ยนจากการรวบรวมข้อมูลไปสู่การประมวลผล. | ||
| เหตุผลที่สำคัญ ใช้ระบุจุดเริ่มต้นของช่วงประมวลผลหลัก และคำนวณเวลารวมของรอบการประมวลผลเงินเดือนทางเทคนิค. แหล่งข้อมูล ค้นหาในตาราง PAY_PAYROLL_ACTIONS โดย ACTION_TYPE เป็น R (Run) หรือ Q (QuickPay) และ ACTION_STATUS ระบุว่าเริ่มแล้ว หรืออนุมานจากวันที่สร้างระเบียน. บันทึก บันทึกเมื่อมีการเพิ่มระเบียนใน PAY_PAYROLL_ACTIONS ประเภทเหตุการณ์ explicit | |||
| สร้างรายการโอนเงินผ่านธนาคารแล้ว | สร้างไฟล์ EFT (Electronic Funds Transfer) หรือไฟล์จ่ายเงินรูปแบบอื่น ขั้นตอนทางเทคนิคนี้เป็นการสร้างไฟล์คำสั่งสำหรับธนาคาร. | ||
| เหตุผลที่สำคัญ ใช้วัดระยะเวลาการสร้างไฟล์จ่ายเงิน หากล่าช้าอาจไม่ทันเวลาตัดรอบของธนาคาร. แหล่งข้อมูล ค้นหาใน PAY_PAYROLL_ACTIONS โดย ACTION_TYPE เป็น M (Magnetic Tape), E (EFT) หรือ C (Check Writer). บันทึก บันทึกเมื่อการดำเนินการ EFT/Check เสร็จสมบูรณ์ ประเภทเหตุการณ์ explicit | |||
| แก้ไขระเบียนเงินเดือนแล้ว | ปรับปรุงรายการองค์ประกอบหรือข้อมูลการจ้างงานด้วยตนเอง หลังประมวลผลเงินเดือนรอบแรกแต่ก่อนสรุปผล กิจกรรมนี้แสดงถึงงานแก้ไขซ้ำเพื่อแก้ข้อผิดพลาดหรือข้อยกเว้น. | ||
| เหตุผลที่สำคัญ บ่งชี้ว่ากระบวนการไม่มีประสิทธิภาพและข้อมูลมีปัญหาด้านคุณภาพ การลดกิจกรรมนี้เป็นหัวใจสำคัญในการเพิ่มอัตราความถูกต้องของเงินเดือนตั้งแต่การประมวลผลครั้งแรก. แหล่งข้อมูล อนุมานจากการค้นหาการปรับปรุง PAY_ELEMENT_ENTRIES_F ที่มี Last Update Date อยู่ระหว่างวันที่ Payroll Run ครั้งแรกกับวันที่ Prepayments. บันทึก เปรียบเทียบเวลาที่อัปเดตรายการองค์ประกอบกับเวลาที่ประมวลผลเงินเดือน ประเภทเหตุการณ์ inferred | |||
| ดำเนินการ QuickPay แล้ว | ดำเนินการจ่ายเงินเดือนให้บุคคลเดียว (QuickPay) ซึ่งโดยทั่วไปใช้ตรวจสอบการแก้ไข ขั้นตอนนี้ใช้แทนกิจกรรมแสดงตัวอย่างผลการจ่ายเงินเดือนได้. | ||
| เหตุผลที่สำคัญ หากมีการทำ QuickPay ให้พนักงานคนเดิมบ่อยครั้ง อาจแสดงว่ากำลังลองผิดลองถูกในกระบวนการจ่ายเงินเดือน แทนที่จะใช้วิธีที่ แหล่งข้อมูล ค้นหาใน PAY_PAYROLL_ACTIONS โดย ACTION_TYPE เป็น Q (QuickPay) แล้วนับจำนวนครั้งต่อพนักงานในแต่ละงวดการจ่ายเงินเดือน. บันทึก บันทึกเมื่อมีการบันทึกการดำเนินการ QuickPay ใน PAY_PAYROLL_ACTIONS ประเภทเหตุการณ์ explicit | |||
| นำเข้าข้อมูลค่าตอบแทนจูงใจแล้ว | สร้างรายการองค์ประกอบสำหรับค่าตอบแทนผันแปร เช่น โบนัสหรือค่าคอมมิชชัน ผ่าน batch loader หรือการนำเข้า HDL ขั้นตอนนี้เป็นการเชื่อมข้อมูลค่าตอบแทนจากภายนอกเข้าสู่รอบจ่ายเงินเดือน. | ||
| เหตุผลที่สำคัญ ใช้ติดตามความเร็วในการนำเข้าค่าตอบแทนผันแปร หากนำเข้าล่าช้า มักต้องจ่ายเงินเดือนรอบเสริมหรือแก้ไขข้อมูลด้วยตนเอง. แหล่งข้อมูล ค้นหาใน PAY_BATCH_HEADERS เพื่อดูว่าการนำเข้าเสร็จสมบูรณ์หรือไม่ หรือติดตามการสร้าง PAY_ELEMENT_ENTRIES_F ที่มีการอ้างอิงระบบต้นทางเฉพาะ. บันทึก บันทึกเมื่อกระบวนการนำเข้ารายการองค์ประกอบแบบ batch เสร็จสมบูรณ์ ประเภทเหตุการณ์ explicit | |||
| เผยแพร่สลิปเงินเดือนแล้ว | จุดที่พนักงานเปิดดูเอกสารสลิปเงินเดือนได้ใน Self Service โดยเกิดขึ้นหลัง Archiver และอาจต้องดำเนินการ Generate Payslip โดยเฉพาะ. | ||
| เหตุผลที่สำคัญ ส่งผลต่อความพึงพอใจของพนักงาน หากต้องรอนานหลังได้รับเงินกว่าจะดูสลิปเงินเดือนได้ พนักงานมักส่งคำขอความช่วยเหลือ. แหล่งข้อมูล ค้นหาในตาราง Documents of Record (HR_DOCUMENTS_OF_RECORD) หรือดูว่ากระบวนการ Generate Payslip ใน PAY_PAYROLL_ACTIONS เสร็จสมบูรณ์หรือไม่. บันทึก บันทึกเมื่อกระบวนการสร้างไฟล์ PDF ของสลิปเงินเดือนเสร็จสมบูรณ์ ประเภทเหตุการณ์ explicit | |||
| พบข้อยกเว้นจากการตรวจสอบ | บันทึกข้อความแสดงข้อผิดพลาดหรือคำเตือนระหว่างการคำนวณหรือตรวจสอบเงินเดือน ข้อมูลนี้ระบุข้อผิดพลาดเฉพาะที่ต้องให้ผู้ใช้ดำเนินการ. | ||
| เหตุผลที่สำคัญ จำเป็นต่อการค้นหาปัญหาคุณภาพข้อมูล หากพบข้อยกเว้นจำนวนมาก จะเพิ่มภาระงานด้วยตนเองและความเสี่ยงที่จะไม่เป็นไปตาม SLA. แหล่งข้อมูล ค้นหาในตาราง PAY_MESSAGE_LINES ที่เชื่อมกับ PAY_PAYROLL_REL_ACTION_ID ที่ระบุ ตารางนี้เก็บข้อผิดพลาดและคำเตือนที่เกิดขึ้นระหว่างการประมวลผล. บันทึก บันทึกเมื่อมีการเพิ่มระเบียนใน PAY_MESSAGE_LINES ประเภทเหตุการณ์ explicit | |||
| ยื่นภาษีเสร็จสมบูรณ์ | สร้างไฟล์ภาษีตามกฎหมาย เช่น ไฟล์ภาษีรายไตรมาสสำหรับบุคคลที่สาม เพื่อให้การจ่ายเงินเดือนในงวดนั้นเป็นไปตามข้อกำหนดของหน่วยงานกำกับดูแล. | ||
| เหตุผลที่สำคัญ จำเป็นต่อ KPI ระยะเวลาประมวลผลการปฏิบัติตามข้อกำหนดด้านภาษี หากดำเนินการไม่สำเร็จอาจมีค่าปรับ. แหล่งข้อมูล ค้นหาใน PAY_PAYROLL_ACTIONS สำหรับการดำเนินการของกลุ่มข้อมูลกฎหมายที่เกี่ยวข้องกับการรายงานภาษี เช่น การยื่นภาษีบุคคลที่สามในสหรัฐฯ. บันทึก บันทึกเมื่อเวิร์กโฟลว์รายงานภาษีที่ระบุเสร็จสมบูรณ์ ประเภทเหตุการณ์ explicit | |||
| ส่งใบบันทึกเวลาแล้ว | เหตุการณ์เริ่มต้นเมื่อพนักงานหรือผู้จัดการส่งข้อมูลเวลาและการทำงานเพื่อประมวลผล ใน Oracle HCM ระบบบันทึกเหตุการณ์นี้เมื่อสถานะใบบันทึกเวลาเปลี่ยนเป็น Submitted ในโมดูล Time and Labor. | ||
| เหตุผลที่สำคัญ เป็นจุดเริ่มต้นที่นำข้อมูลดิบเข้าสู่กระบวนการจ่ายเงินเดือนที่อาจเกิดขึ้น หากล่าช้า ผลกระทบจะต่อเนื่องไปยังขั้นตอนถัดไป ทำให้ผู้เชี่ยวชาญด้านเงินเดือนมีเวลาตรวจสอบการคำนวณน้อยลง. แหล่งข้อมูล ค้นหาในตาราง HWM_TM_REC_GRP_DTLS หรือมุมมอง HXT_TIMECARDS เมื่อสถานะเปลี่ยนเป็น SUBMITTED โดยใช้เวลาที่ส่งข้อมูล. บันทึก บันทึกเมื่อสถานะใน Time and Labor เปลี่ยนเป็น SUBMITTED ประเภทเหตุการณ์ explicit | |||
| สร้างผลลัพธ์สำหรับจัดเก็บแล้ว | กระบวนการ Archive Periodic Payroll Results เสร็จสมบูรณ์ โดยสแนปชอตนี้จะล็อกข้อมูลสำหรับทำรายงานและสร้างสลิปเงินเดือน. | ||
| เหตุผลที่สำคัญ เป็นข้อกำหนดทางเทคนิคก่อนสร้างสลิปเงินเดือนและรายงานตามกฎหมาย และยืนยันว่าข้อมูลสรุปเรียบร้อยแล้ว. แหล่งข้อมูล ค้นหาใน PAY_PAYROLL_ACTIONS โดย ACTION_TYPE เป็น X (Archive) และสถานะเป็น Complete. บันทึก บันทึกเมื่อการดำเนินการ Archive เสร็จสมบูรณ์ ประเภทเหตุการณ์ explicit | |||
| อนุมัติ Payroll Run แล้ว | อนุมัติทะเบียนเงินเดือนหรือเวิร์กโฟลว์อย่างเป็นทางการในแดชบอร์ด Payroll โดยทั่วไปจะดำเนินการหลังตรวจสอบรายงานยืนยันผล และก่อนสร้างไฟล์ธนาคาร. | ||
| เหตุผลที่สำคัญ แสดงการอนุมัติขั้นสุดท้ายจากผู้จัดการ ระยะเวลาตั้งแต่คำนวณจนถึงอนุมัติคือช่วงเวลาสำหรับตรวจสอบ. แหล่งข้อมูล ค้นหาใน PAY_REQ_FLOW_INSTANCES เพื่อดูการเปลี่ยนสถานะหรือการทำงานเฉพาะที่เสร็จสมบูรณ์ภายใน Payroll Flow Pattern ที่กำหนด. บันทึก บันทึกเมื่อสถานะ Flow Instance เปลี่ยนเป็น Completed/Approved ประเภทเหตุการณ์ explicit | |||
| อนุมัติใบบันทึกเวลาแล้ว | ยืนยันว่าผู้จัดการตรวจสอบและอนุมัติข้อมูลเวลาที่ส่งมาแล้ว การเปลี่ยนสถานะนี้จะเริ่มถ่ายโอนข้อมูลไปยังรายการองค์ประกอบเงินเดือน. | ||
| เหตุผลที่สำคัญ จำเป็นต่อการวัดระยะเวลารออนุมัติจากผู้จัดการ ความล่าช้าในขั้นตอนนี้เป็นสาเหตุหลักที่ทำให้ต้องปรับเงินย้อนหลังในงวดถัดไป. แหล่งข้อมูล ค้นหาในตาราง HWM_TM_REC_GRP_DTLS หรือมุมมอง HXT_TIMECARDS เมื่อสถานะเปลี่ยนเป็น APPROVED แล้วเปรียบเทียบเวลาอนุมัติกับเวลาที่ส่งข้อมูล. บันทึก บันทึกเมื่อสถานะใน Time and Labor เปลี่ยนเป็น APPROVED ประเภทเหตุการณ์ explicit | |||
| โอนข้อมูลต้นทุนแล้ว | โอนผลการคำนวณต้นทุนเงินเดือนไปยังบัญชีแยกประเภททั่วไป เป็นการปิดบัญชีการเงินของรอบจ่ายเงินเดือน. | ||
| เหตุผลที่สำคัญ ช่วยให้การเงินเป็นไปตามข้อกำหนดและบันทึกต้นทุนแรงงานได้ถูกต้อง หากล่าช้า ฝ่ายการเงินจะปิดบัญชีไม่ได้. แหล่งข้อมูล ค้นหาใน PAY_PAYROLL_ACTIONS โดย ACTION_TYPE เป็น T (Transfer to GL) และสถานะเป็น Complete. บันทึก บันทึกเมื่อกระบวนการ Transfer to GL เสร็จสมบูรณ์ ประเภทเหตุการณ์ explicit | |||
คู่มือการดึงข้อมูล
ขั้นตอน
เข้าใช้ Data Exchange: เข้าสู่ระบบ Oracle HCM Cloud ด้วยบัญชีผู้ใช้ที่มีบทบาท 'Human Capital Management Integration Specialist' ไปที่ My Client Groups > Data Exchange > Extract Definitions.
สร้าง Extract ใหม่: คลิกไอคอน '+' เพื่อสร้าง extract ตั้งชื่อว่า 'ProcessMind_Payroll_Extract' เลือก 'Payroll' เป็น consumer และ 'HR Archive' เป็น category เพื่อให้เข้าถึงข้อมูลย้อนหลังของ payroll action ได้
กำหนดกลุ่มข้อมูล: สร้าง Root Data Group โดยอิง User Entity
PAY_PAYROLL_REL_UE(Payroll Relationship) เพื่อผูกการดึงข้อมูลกับความสัมพันธ์ด้านเงินเดือนของพนักงาน สร้างกลุ่มข้อมูลย่อยสำหรับPAY_ACTION_INFORMATION_UE,PAY_ELEMENT_ENTRY_UEและHWM_MEASURE_DAY_V_UE(สำหรับข้อมูลเวลาและแรงงาน)กำหนดค่า Extract Records: กำหนด records ภายในกลุ่มข้อมูลเพื่อแปลงข้อมูลลำดับชั้นให้อยู่ในรูปแบบแบนราบ โดยต้องสร้าง records เฉพาะสำหรับกิจกรรมแต่ละประเภท เช่น record ที่กรองเหตุการณ์ 'Time Card' และอีก record สำหรับ 'Run Results'
ใช้ตรรกะ SQL ผ่าน FastFormula หรือ BIP: เนื่องจากการแปลงข้อมูลเงินเดือนแบบลำดับชั้นให้เป็นบันทึกเหตุการณ์แบบแถวเดียวมีความซับซ้อน วิธีที่ยืดหยุ่นที่สุดคือใช้ 'Extract Delivery Option' เพื่อเรียก BI Publisher Report จากนั้นใช้ SQL ในส่วน 'Query' ด้านล่างเป็น Data Model วิธีนี้เหมาะกว่าการกรองผ่าน GUI ของระบบเมื่อต้องสร้างบันทึกเหตุการณ์แบบรวม
สร้าง BI Publisher Data Model: ไปที่ Tools > Reports and Analytics > Browse Catalog แล้วสร้าง Data Model ใหม่ วาง SQL query ด้านล่าง จากนั้นกำหนดพารามิเตอร์
bind_start_dateและbind_end_dateเชื่อม Extract กับ BIP: ในแท็บ 'Delivery' ของ Extract Definition ให้สร้าง delivery option เลือก 'PDF' หรือ 'XML' เป็นรูปแบบผลลัพธ์ (ProcessMind แนะนำ CSV แต่คุณจะแปลงผลลัพธ์จาก BIP ในภายหลัง) แล้วเลือก BI Publisher report ที่สร้างไว้ในขั้นตอนก่อนหน้า
กำหนดพารามิเตอร์: เพิ่มพารามิเตอร์ Start Date และ End Date ใน Extract Execution Tree เพื่อส่งค่าไปยัง BI Publisher query โดยอัตโนมัติ
ตรวจสอบและส่งงาน: ตรวจสอบ Extract Definition เพื่อค้นหาข้อผิดพลาด แล้วคลิก 'Submit Extract' ระบุพารามิเตอร์ เช่น ย้อนหลัง 90 วัน
ติดตามสถานะกระบวนการ: ไปที่ 'View Extract Results' แล้วรอจนสถานะเปลี่ยนเป็น 'Succeeded'
ดาวน์โหลดผลลัพธ์: ดาวน์โหลดไฟล์ XML/CSV ที่สร้างขึ้น แล้วเปิดตรวจสอบว่ามีคอลัมน์ที่จำเป็น เช่น PayrollRecord, ActivityName และ EventTimestamp
จัดรูปแบบสำหรับ ProcessMind: หากผลลัพธ์เป็น XML ให้แปลงเป็นไฟล์ CSV แบบแบนราบ และตรวจสอบให้แน่ใจว่าชื่อหัวคอลัมน์ตรงกับข้อกำหนด 'Attributes to include' จากนั้นอัปโหลดไฟล์ไปยัง ProcessMind.
การกำหนดค่า
- โหมดการดึงข้อมูล: เลือก Changes Only หรือ Full Extract สำหรับการโหลดครั้งแรก ให้ใช้ Full Extract ส่วนการอัปเดตรายวัน ให้ตั้งค่า 'Changes Only' โดยอิง Last Update Date.
- Legislative Data Group (LDG): หาก instance ของคุณรองรับหลายประเทศ แนะนำให้กรองตาม LDG เพราะคำจำกัดความของระบบเงินเดือนแตกต่างกันไปตามกฎหมายแต่ละประเทศ
- ช่วงวันที่: กำหนด
bind_start_dateและbind_end_dateให้ครอบคลุมอย่างน้อย 3-6 เดือน เพื่อให้ process mining วิเคราะห์ระยะเวลาตลอดรอบการทำงานได้ครบถ้วน - ขนาดชุดข้อมูล: หากมีพนักงานจำนวนมาก (10k คนขึ้นไป) ให้ตั้ง chunk size ใน Extract Definition เป็น 2000 เพื่อป้องกันข้อผิดพลาดจากการหมดเวลา
- วันที่มีผลบังคับใช้: ตารางเงินเดือนมีผลตามวันที่ ตรรกะ query จะจัดการ
effective_start_dateและeffective_end_dateโดยตรง เพื่อดึงข้อมูลระเบียนย้อนหลังในเวอร์ชันที่ถูกต้อง - ความปลอดภัย: บัญชีผู้ใช้ที่เรียกใช้ต้องมีโปรไฟล์ความปลอดภัยของข้อมูลที่อนุญาตให้ดูระบบเงินเดือนและแผนกทั้งหมดที่ต้องการวิเคราะห์.
ตัวอย่างคำค้น sql
/* Oracle HCM Cloud Payroll Extraction for ProcessMind */
/* Aggregating 16 specific activities into a unified Event Log */
SELECT
/* Attributes */
rel.person_number || '-' || ppa.payroll_action_id AS PayrollRecord,
'Time Card Submitted' AS ActivityName,
TO_CHAR(htr.creation_date, 'YYYY-MM-DD HH24:MI:SS') AS EventTimestamp,
'Oracle HCM Time and Labor' AS SourceSystem,
TO_CHAR(htr.last_update_date, 'YYYY-MM-DD HH24:MI:SS') AS LastDataUpdate,
pap.name AS PayrollPeriodName,
org.name AS DepartmentName,
NULL AS GrossPayAmount
FROM hwm_tm_rec htr
JOIN hwm_tm_rec_grp htrg ON htr.tm_rec_grp_id = htrg.tm_rec_grp_id
JOIN per_all_people_f rel ON htrg.person_id = rel.person_id
LEFT JOIN pay_all_payrolls_f pap ON htrg.payroll_id = pap.payroll_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id /* Adjust mapping */
WHERE htr.latest_version_flag = 'Y'
AND htr.tm_rec_status = 'SUBMITTED'
AND htr.creation_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Time Card Approved',
TO_CHAR(htr.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Time and Labor',
TO_CHAR(htr.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM hwm_tm_rec htr
JOIN hwm_tm_rec_grp htrg ON htr.tm_rec_grp_id = htrg.tm_rec_grp_id
JOIN per_all_people_f rel ON htrg.person_id = rel.person_id
LEFT JOIN pay_all_payrolls_f pap ON htrg.payroll_id = pap.payroll_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE htr.latest_version_flag = 'Y'
AND htr.tm_rec_status = 'APPROVED'
AND htr.last_update_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || pee.element_entry_id,
'Incentive Data Imported',
TO_CHAR(pee.creation_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pee.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
NULL,
org.name,
NULL
FROM pay_element_entries_f pee
JOIN pay_element_types_f pet ON pee.element_type_id = pet.element_type_id
JOIN per_all_assignments_m asg ON pee.assignment_id = asg.assignment_id
JOIN per_all_people_f rel ON asg.person_id = rel.person_id
LEFT JOIN per_departments org ON asg.organization_id = org.organization_id
WHERE pet.classification_name IN ('Supplemental Earnings', 'Voluntary Deductions')
AND pee.creator_type IN ('H', 'F') /* HDL or Flat File */
AND pee.creation_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payroll Calculation Started',
TO_CHAR(ppa.creation_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(ppa.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_actions ppa
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN pay_payroll_rel_actions pra ON ppa.payroll_action_id = pra.payroll_action_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id /* Simplified Join */
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type IN ('R', 'Q') /* Run or QuickPay */
AND ppa.creation_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payroll Calculation Executed',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
(SELECT SUM(prrv.result_value) FROM pay_run_result_values prrv JOIN pay_run_results prr ON prrv.run_result_id = prr.run_result_id WHERE prr.payroll_rel_action_id = pra.payroll_rel_action_id) AS GrossPayAmount
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type IN ('R', 'Q')
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Audit Exception Flagged',
TO_CHAR(pml.creation_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pml.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_message_lines pml
JOIN pay_payroll_rel_actions pra ON pml.source_id = pra.payroll_rel_action_id
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE pml.message_level IN ('F', 'E') /* Fatal or Error */
AND pml.creation_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payroll Record Corrected',
TO_CHAR(pee.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pee.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_element_entries_f pee
JOIN pay_payroll_rel_actions pra ON pee.creator_id = pra.payroll_rel_action_id
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE pee.last_update_date > pee.creation_date
AND pee.last_update_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'QuickPay Executed',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'Q'
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Prepayments Calculated',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'P' /* Distribution */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payroll Run Approved',
TO_CHAR(pfi.action_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pfi.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_flow_instances pfi
JOIN pay_payroll_actions ppa ON pfi.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN pay_payroll_rel_actions pra ON ppa.payroll_action_id = pra.payroll_action_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE pfi.status = 'COMPLETED'
AND pfi.instance_name LIKE '%Approval%'
AND pfi.action_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Archive Results Generated',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'X' /* Archive */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Bank Transfer Generated',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
(SELECT SUM(ppp.value) FROM pay_pre_payments ppp WHERE ppp.payroll_action_id = ppa.payroll_action_id) AS GrossPayAmount
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type IN ('M', 'E') /* Mag Tape or EFT */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Payment Executed',
TO_CHAR(ppp.base_currency_value, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(ppa.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
ppp.value AS GrossPayAmount
FROM pay_pre_payments ppp
JOIN pay_payroll_actions ppa ON ppp.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN pay_payroll_rel_actions pra ON ppa.payroll_action_id = pra.payroll_action_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type IN ('H', 'E', 'M') /* Check or EFT */
AND ppa.effective_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Pay Slip Published',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'G' /* Generate Payslip */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Costing Transferred',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.action_type = 'T' /* Transfer to GL */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date
UNION ALL
SELECT
rel.person_number || '-' || ppa.payroll_action_id,
'Tax Filing Completed',
TO_CHAR(pra.action_sequence_date, 'YYYY-MM-DD HH24:MI:SS'),
'Oracle HCM Payroll',
TO_CHAR(pra.last_update_date, 'YYYY-MM-DD HH24:MI:SS'),
pap.name,
org.name,
NULL
FROM pay_payroll_rel_actions pra
JOIN pay_payroll_actions ppa ON pra.payroll_action_id = ppa.payroll_action_id
JOIN pay_all_payrolls_f pap ON ppa.payroll_id = pap.payroll_id
JOIN per_all_people_f rel ON pra.payroll_relationship_id = rel.person_id
LEFT JOIN per_departments org ON rel.attribute1 = org.organization_id
WHERE ppa.report_category IN ('Tax', 'Regulatory') /* Customize based on local requirements */
AND pra.action_status = 'C'
AND pra.action_sequence_date BETWEEN :bind_start_date AND :bind_end_date ขั้นตอน
- เข้าสู่ระบบ Oracle BI Publisher: เข้าใช้สภาพแวดล้อม Oracle Cloud แล้วไปที่ Tools > Reports and Analytics คลิก Browse Catalog เพื่อเปิดอินเทอร์เฟซ BI Publisher.
- สร้าง Data Model: คลิก New (มุมซ้ายบน) แล้วเลือก Data Model ซึ่งเป็นพื้นที่สำหรับจัดเก็บตรรกะ SQL ที่ใช้ดึงข้อมูล
- สร้าง SQL Data Set: ในแท็บ Diagram คลิกไอคอน New Data Set แล้วเลือก SQL Query
- กำหนดค่าแหล่งข้อมูล: ตั้งชื่อ data set เช่น
ProcessMind_Payroll_Extractกำหนด Data Source เป็นApplicationDB_HCM(หรือการเชื่อมต่อ HCM Application Database ของคุณ) และคงประเภทไว้เป็น Standard SQL - ใส่ Query: คัดลอก SQL script ทั้งหมดจากส่วน Query ด้านล่าง แล้ววางในช่อง SQL Query โดยไม่ต้องใส่รูปแบบ markdown
- กำหนดพารามิเตอร์: query ใช้ตัวแปร bind
:p_start_dateและ:p_end_dateในแท็บ Parameters ของ Data Model ให้สร้างพารามิเตอร์ทั้งสองตัวเป็นชนิด Date เพื่อกรองช่วงข้อมูล เช่น อิงppa.EFFECTIVE_DATE - ตรวจสอบโครงสร้างข้อมูล: คลิก OK แล้วเปิดแท็บ Data ในตัวแก้ไข Data Model ใส่วันที่ตัวอย่าง เช่น
2023-01-01ถึง2023-03-31แล้วคลิก View ตรวจสอบว่าผลลัพธ์มีแถวที่ประกอบด้วยPayrollRecord,ActivityNameและEventTimestamp - บันทึก Data Model: บันทึกโมเดลในโฟลเดอร์ที่ใช้ร่วมกัน เช่น
/Shared Folders/Custom/ProcessMining - สร้างรายงานเพื่อส่งออก: คลิก Create Report แล้วเลือก Data Model ที่เพิ่งบันทึก ใช้ Report Wizard สร้างตารางอย่างง่ายที่มีทุกคอลัมน์ และยกเลิก 'Show Grand Totals'
- ส่งออกเป็น CSV: เปิดรายงานใน Report Viewer คลิกเมนู Actions (ไอคอนรูปเฟือง) > Export > Data > CSV
- แปลงข้อมูล: เปิดไฟล์ CSV และตรวจสอบว่ารูปแบบวันที่เป็น ISO 8601 (
YYYY-MM-DD HH:MM:SS) หากระบบไม่ได้จัดรูปแบบให้อัตโนมัติ หากวาง SQL ถูกต้องก็ไม่จำเป็นต้องปรับโครงสร้างข้อมูลเพิ่มเติม - อัปโหลด: นำเข้าไฟล์ CSV ที่ได้ไปยัง ProcessMind แล้วจับคู่คอลัมน์ตามที่ระบุไว้ในข้อกำหนดข้อมูล.
การกำหนดค่า
- การเชื่อมต่อแหล่งข้อมูล: ต้องใช้
ApplicationDB_HCMหรือแหล่งข้อมูล JNDI ที่เทียบเท่าซึ่งมีสิทธิ์อ่านสคีมาPAY_และPER_. - ช่วงวันที่: แนะนำให้ดึงข้อมูลย้อนหลัง 3-6 เดือน เพื่อให้ครอบคลุมรอบการจ่ายเงินเดือน ใช้พารามิเตอร์
:p_start_dateและ:p_end_dateเพื่อกำหนดช่วงโหลดข้อมูลได้ตามต้องการ - Legislative Data Group (LDG): โดยค่าเริ่มต้น query จะดึงข้อมูลจาก LDG ทั้งหมด หากคุณดำเนินงานในหลายประเทศ ให้พิจารณาเพิ่มตัวกรอง
AND ppa.LEGISLATIVE_DATA_GROUP_ID = [Your_LDG_ID]เพื่อแยกข้อมูล - ประสิทธิภาพ: query เข้าถึงตารางที่มีข้อมูลจำนวนมาก (
PAY_RUN_RESULTS,PAY_ASSIGNMENT_ACTIONS) ควรกำหนดช่วงวันที่ไม่ให้กว้างเกินไป เช่น มากกว่า 1 ปี เพื่อป้องกัน BI Publisher หมดเวลา - ความปลอดภัย: ผู้เรียกใช้รายงานต้องมีสิทธิ์ Data Access Set สำหรับคำจำกัดความของระบบเงินเดือนที่ต้องการ.
ตัวอย่างคำค้น sql
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Time Card Submitted' AS ActivityName,
peef.CREATION_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
peef.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME AS LegislativeDataGroup,
org.NAME AS DepartmentName,
peef.LAST_UPDATED_BY AS ProcessingUser,
NULL AS GrossPayAmount,
ptp.PERIOD_NAME AS PayrollPeriodName,
NULL AS SlaProcessingDeadline,
'N' AS IsManualCorrection,
pg.PAYROLL_NAME AS PayGroup,
NULL AS ProcessDurationDays
FROM PAY_ELEMENT_ENTRIES_F peef
JOIN PER_ALL_ASSIGNMENTS_M paam ON peef.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND peef.EFFECTIVE_START_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND peef.EFFECTIVE_START_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PAY_PAY_RELATIONSHIPS_DN pprd ON paam.PAYROLL_RELATIONSHIP_ID = pprd.PAYROLL_RELATIONSHIP_ID
JOIN PER_TIME_PERIODS ptp ON pprd.PAYROLL_ID = ptp.PAYROLL_ID
AND peef.EFFECTIVE_START_DATE BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON pprd.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON pprd.PAYROLL_ID = pg.PAYROLL_ID
WHERE peef.CREATOR_TYPE = 'H'
AND peef.CREATION_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Time Card Approved' AS ActivityName,
peef.EFFECTIVE_START_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
peef.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
peef.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_ELEMENT_ENTRIES_F peef
JOIN PER_ALL_ASSIGNMENTS_M paam ON peef.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND peef.EFFECTIVE_START_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND peef.EFFECTIVE_START_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PAY_PAY_RELATIONSHIPS_DN pprd ON paam.PAYROLL_RELATIONSHIP_ID = pprd.PAYROLL_RELATIONSHIP_ID
JOIN PER_TIME_PERIODS ptp ON pprd.PAYROLL_ID = ptp.PAYROLL_ID
AND peef.EFFECTIVE_START_DATE BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON pprd.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON pprd.PAYROLL_ID = pg.PAYROLL_ID
WHERE peef.CREATOR_TYPE = 'H'
AND peef.EFFECTIVE_START_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Incentive Data Imported' AS ActivityName,
peef.CREATION_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
peef.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
peef.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_ELEMENT_ENTRIES_F peef
JOIN PER_ALL_ASSIGNMENTS_M paam ON peef.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND peef.EFFECTIVE_START_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND peef.EFFECTIVE_START_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PAY_PAY_RELATIONSHIPS_DN pprd ON paam.PAYROLL_RELATIONSHIP_ID = pprd.PAYROLL_RELATIONSHIP_ID
JOIN PER_TIME_PERIODS ptp ON pprd.PAYROLL_ID = ptp.PAYROLL_ID
AND peef.EFFECTIVE_START_DATE BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON pprd.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON pprd.PAYROLL_ID = pg.PAYROLL_ID
WHERE peef.CREATOR_TYPE IN ('B', 'F')
AND peef.CREATION_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
CASE
WHEN ppa.ACTION_TYPE = 'R' AND paa.ACTION_STATUS = 'C' THEN 'Payroll Calculation Executed'
WHEN ppa.ACTION_TYPE = 'R' THEN 'Payroll Calculation Started'
WHEN ppa.ACTION_TYPE = 'Q' THEN 'QuickPay Executed'
WHEN ppa.ACTION_TYPE IN ('P', 'U') THEN 'Prepayments Calculated'
WHEN ppa.ACTION_TYPE = 'X' THEN 'Archive Results Generated'
WHEN ppa.ACTION_TYPE = 'M' THEN 'Bank Transfer Generated'
WHEN ppa.ACTION_TYPE IN ('Z', 'E') THEN 'Payment Executed'
WHEN ppa.ACTION_TYPE = 'T' THEN 'Costing Transferred'
ELSE 'Payroll Process Action'
END AS ActivityName,
ppa.CREATION_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
paa.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
ppa.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
ptp.REGULAR_PAYMENT_DATE AS SlaProcessingDeadline,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_PAYROLL_ACTIONS ppa
JOIN PAY_ASSIGNMENT_ACTIONS paa ON ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
JOIN PER_ALL_ASSIGNMENTS_M paam ON paa.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND ppa.EFFECTIVE_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND ppa.EFFECTIVE_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PER_TIME_PERIODS ptp ON ppa.PAYROLL_ID = ptp.PAYROLL_ID
AND ppa.DATE_EARNED BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON ppa.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON ppa.PAYROLL_ID = pg.PAYROLL_ID
WHERE ppa.ACTION_TYPE IN ('R', 'Q', 'P', 'U', 'X', 'M', 'Z', 'E', 'T')
AND ppa.EFFECTIVE_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Audit Exception Flagged' AS ActivityName,
pml.CREATION_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
pml.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
pml.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'Y',
pg.PAYROLL_NAME,
NULL
FROM PAY_MESSAGE_LINES pml
JOIN PAY_PAYROLL_ACTIONS ppa ON pml.PAYROLL_ACTION_ID = ppa.PAYROLL_ACTION_ID
LEFT JOIN PAY_ASSIGNMENT_ACTIONS paa ON ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
JOIN PER_ALL_ASSIGNMENTS_M paam ON paa.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND ppa.EFFECTIVE_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND ppa.EFFECTIVE_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PER_TIME_PERIODS ptp ON ppa.PAYROLL_ID = ptp.PAYROLL_ID
AND ppa.DATE_EARNED BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON ppa.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON ppa.PAYROLL_ID = pg.PAYROLL_ID
WHERE pml.MESSAGE_LEVEL IN ('E', 'W')
AND pml.CREATION_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Payroll Record Corrected' AS ActivityName,
peef.LAST_UPDATE_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
peef.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
peef.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'Y',
pg.PAYROLL_NAME,
NULL
FROM PAY_ELEMENT_ENTRIES_F peef
JOIN PER_ALL_ASSIGNMENTS_M paam ON peef.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND peef.EFFECTIVE_START_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND peef.EFFECTIVE_START_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PAY_PAY_RELATIONSHIPS_DN pprd ON paam.PAYROLL_RELATIONSHIP_ID = pprd.PAYROLL_RELATIONSHIP_ID
JOIN PER_TIME_PERIODS ptp ON pprd.PAYROLL_ID = ptp.PAYROLL_ID
AND peef.EFFECTIVE_START_DATE BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON pprd.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON pprd.PAYROLL_ID = pg.PAYROLL_ID
WHERE peef.LAST_UPDATE_DATE > peef.CREATION_DATE
AND peef.LAST_UPDATE_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Payroll Run Approved' AS ActivityName,
ppa.LAST_UPDATE_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
ppa.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
ppa.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_PAYROLL_ACTIONS ppa
JOIN PAY_ASSIGNMENT_ACTIONS paa ON ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
JOIN PER_ALL_ASSIGNMENTS_M paam ON paa.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND ppa.EFFECTIVE_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND ppa.EFFECTIVE_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PER_TIME_PERIODS ptp ON ppa.PAYROLL_ID = ptp.PAYROLL_ID
AND ppa.DATE_EARNED BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON ppa.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON ppa.PAYROLL_ID = pg.PAYROLL_ID
WHERE ppa.ACTION_TYPE = 'R'
AND paa.ACTION_STATUS = 'C'
AND ppa.EFFECTIVE_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Pay Slip Published' AS ActivityName,
(ppa.CREATION_DATE + 1) AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
ppa.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
ppa.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_PAYROLL_ACTIONS ppa
JOIN PAY_ASSIGNMENT_ACTIONS paa ON ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
JOIN PER_ALL_ASSIGNMENTS_M paam ON paa.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND ppa.EFFECTIVE_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND ppa.EFFECTIVE_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PER_TIME_PERIODS ptp ON ppa.PAYROLL_ID = ptp.PAYROLL_ID
AND ppa.DATE_EARNED BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON ppa.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON ppa.PAYROLL_ID = pg.PAYROLL_ID
WHERE ppa.ACTION_TYPE = 'X'
AND ppa.EFFECTIVE_DATE BETWEEN :p_start_date AND :p_end_date
UNION ALL
SELECT
TO_CHAR(papf.PERSON_NUMBER) || '-' || ptp.PERIOD_NAME AS PayrollRecord,
'Tax Filing Completed' AS ActivityName,
ppa.CREATION_DATE AS EventTimestamp,
'Oracle HCM' AS SourceSystem,
ppa.LAST_UPDATE_DATE AS LastDataUpdate,
pld.NAME,
org.NAME,
ppa.LAST_UPDATED_BY,
NULL,
ptp.PERIOD_NAME,
NULL,
'N',
pg.PAYROLL_NAME,
NULL
FROM PAY_PAYROLL_ACTIONS ppa
JOIN PAY_ASSIGNMENT_ACTIONS paa ON ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
JOIN PER_ALL_ASSIGNMENTS_M paam ON paa.ASSIGNMENT_ID = paam.ASSIGNMENT_ID
AND ppa.EFFECTIVE_DATE BETWEEN paam.EFFECTIVE_START_DATE AND paam.EFFECTIVE_END_DATE
JOIN PER_ALL_PEOPLE_F papf ON paam.PERSON_ID = papf.PERSON_ID
AND ppa.EFFECTIVE_DATE BETWEEN papf.EFFECTIVE_START_DATE AND papf.EFFECTIVE_END_DATE
JOIN PER_TIME_PERIODS ptp ON ppa.PAYROLL_ID = ptp.PAYROLL_ID
AND ppa.DATE_EARNED BETWEEN ptp.START_DATE AND ptp.END_DATE
LEFT JOIN PER_LEGISLATIVE_DATA_GROUPS_VL pld ON ppa.LEGISLATIVE_DATA_GROUP_ID = pld.LEGISLATIVE_DATA_GROUP_ID
LEFT JOIN HR_ORGANIZATION_UNITS_F_TL org ON paam.ORGANIZATION_ID = org.ORGANIZATION_ID AND org.LANGUAGE = USERENV('LANG')
LEFT JOIN PAY_ALL_PAYROLLS_F pg ON ppa.PAYROLL_ID = pg.PAYROLL_ID
WHERE ppa.ACTION_TYPE = 'Z'
AND ppa.CREATION_DATE BETWEEN :p_start_date AND :p_end_date พร้อมเริ่มต้นหรือยัง?
ใช้เทมเพลตข้อมูลนี้เพื่อเห็นภาพรอบการจ่ายเงินเดือนของคุณอย่างชัดเจน และปรับปรุงการปฏิบัติการด้านเงินเดือน เริ่มเพิ่มประสิทธิภาพและความแม่นยำของรายงานได้วันนี้.
เริ่มปรับปรุงการประมวลผลเงินเดือนใน Oracle HCM วันนี้
ลดระยะเวลารอบการจ่ายเงินเดือนลง 30% และขจัดคอขวด.
ไม่ต้องใช้บัตรเครดิต ตั้งค่าเสร็จในไม่กี่นาที.