Mẫu dữ liệu quy trình tính lương
Mẫu dữ liệu quy trình tính lương
- Các trường dữ liệu phù hợp để phân tích tính lương
- Theo dõi hoạt động chi tiết để sơ đồ hóa toàn bộ vòng đời
- Hướng dẫn trích xuất dữ liệu chi tiết cho Oracle HCM Cloud Payroll
Thuộc tính quy trình tính lương
| Tên | Mô tả | ||
|---|---|---|---|
| Dấu thời gian sự kiện EventTimestamp | Ngày và giờ chính xác khi hoạt động diễn ra. | ||
| Mô tả Ghi lại thời điểm cụ thể một hoạt động diễn ra. Thông tin này rất quan trọng để tính thời lượng, thời gian chờ và xác định điểm nghẽn. Với các bước tự động, đây là thời điểm hệ thống thực thi. Với các bước thủ công như phê duyệt, đây là dấu thời gian của thao tác người dùng được ghi trong nhật ký giao dịch. Vì sao điều này quan trọng Cần thiết để sắp xếp sự kiện theo trình tự thời gian và tính mọi KPI dựa trên thời gian. Lấy dữ liệu ở đâu Các cột CREATION_DATE hoặc ACTION_DATE trong những bảng giao dịch liên quan như PAY_ACTION_INFORMATION. Ví dụ 2023-10-01T08:30:00Z2023-10-01T14:15:22Z2023-10-05T09:00:00Z | |||
| Hệ thống nguồn SourceSystem | Tên hệ thống nơi sự kiện phát sinh. | ||
| Mô tả Cho biết phần mềm hoặc mô-đun tạo ra điểm dữ liệu. Trong quy trình này, giá trị chính là 'Oracle HCM Cloud Payroll'. Tuy nhiên, trong môi trường hệ thống phức tạp, trường này có thể giúp phân biệt công cụ tính lương chính với mô-đun chấm công và quản lý thời gian hoặc giao diện ngân hàng bên ngoài. Vì sao điều này quan trọng Cung cấp thông tin về nguồn gốc dữ liệu, đặc biệt khi tích hợp dữ liệu từ các hệ thống chấm công hoặc ngân hàng. Lấy dữ liệu ở đâu Được điền sẵn khi trích xuất dữ liệu hoặc xác định từ ID giao diện. Ví dụ Oracle HCM Cloud PayrollOracle Time and LaborGiao diện ngân hàng bên ngoài | |||
| Hồ sơ tính lương PayrollRecord | Mã định danh duy nhất đại diện cho một người lao động trong một kỳ trả lương cụ thể. | ||
| Mô tả Hồ sơ tính lương là mã định danh trường hợp trung tâm trong phân tích process mining. Mã này được ghép từ Mã định danh đợt phân công của người lao động và Mã định danh kỳ tính lương, hoặc dùng một khóa duy nhất kết hợp hai thông tin đó. Thuộc tính này nhóm mọi hoạt động liên quan đến việc trả lương cho một người lao động trong một chu kỳ cụ thể, từ lúc gửi bảng chấm công đến khi chuyển khoản ngân hàng và kê khai thuế. Nhờ đó, bạn có thể phân biệt các lần trả lương cho cùng một người lao động vào tháng 1 và tháng 2. Vì sao điều này quan trọng Thuộc tính này đóng vai trò là Case ID, liên kết các sự kiện riêng lẻ thành một phiên bản quy trình để phân tích. Lấy dữ liệu ở đâu Được tạo từ PAY_ASSIGNMENT_ACTIONS hoặc kết hợp Person Number với Payroll Period Name trong Oracle HCM. Ví dụ EMP1001-2023-M01EMP5992-2023-W42300000018273645US-NY-A123-JAN23 | |||
| Lần cập nhật dữ liệu gần nhất LastDataUpdate | Thời điểm bản ghi được sửa đổi lần cuối trong cơ sở dữ liệu nguồn. | ||
| Mô tả Cho biết dữ liệu dùng để phân tích được cập nhật gần đây đến mức nào. Thông tin này khác với Dấu thời gian sự kiện, vì nó cho biết lần gần nhất một hàng trong cơ sở dữ liệu được ETL hoặc hệ thống cập nhật. Dùng thông tin này để kiểm tra độ mới của dữ liệu và tìm nguyên nhân gây chậm trễ khi trích xuất. Vì sao điều này quan trọng Giúp nhà phân tích biết dữ liệu đang xem là dữ liệu thời gian thực hay đã cũ. Lấy dữ liệu ở đâu Cột LAST_UPDATE_DATE có trong hầu hết các bảng Oracle HCM. Ví dụ 2023-10-02T12:00:00Z2023-10-06T01:00:00Z | |||
| Tên hoạt động ActivityName | Bước hoặc sự kiện cụ thể diễn ra trong chu kỳ tính lương. | ||
| Mô tả Thuộc tính này ghi lại tên sự kiện diễn ra trong quy trình tính lương. Ví dụ: 'Đã gửi bảng chấm công', 'Đã bắt đầu tính lương' và 'Đã thực hiện thanh toán'. Đây là chiều dữ liệu chính để khám phá quy trình và phân tích biến thể. Trong Oracle HCM Cloud, thuộc tính này thường được xác định từ Action Type hoặc Action Status trong các bảng hành động tính lương. Vì sao điều này quan trọng Thuộc tính này xác định quy trình đã diễn ra những gì, giúp tái dựng sơ đồ quy trình. Lấy dữ liệu ở đâu Lấy từ mã ACTION_TYPE trong PAY_PAYROLL_ACTIONS hoặc từ các thay đổi trạng thái trong nhật ký kiểm tra. Ví dụ Đã bắt đầu tính lươngĐã phê duyệt bảng chấm côngĐã tạo lệnh chuyển khoản ngân hàngĐã gắn cờ ngoại lệ kiểm toán | |||
| Có chỉnh sửa thủ công IsManualCorrection | Cờ cho biết hoạt động có cần can thiệp thủ công hay không. | ||
| Mô tả Cờ dạng đúng/sai, được đặt thành true cho các hoạt động như 'Data Correction Performed' hoặc 'Payroll Record Corrected'. Dùng cờ này để tính KPI 'Manual Data Correction Rate' và 'First-Pass Payroll Accuracy Rate'. Vì sao điều này quan trọng Phân biệt xử lý tự động xuyên suốt với các bước làm lại thủ công. Lấy dữ liệu ở đâu Được suy ra từ Tên hoạt động hoặc các Loại hành động cụ thể cho biết có điều chỉnh, chẳng hạn như QuickPay hoặc Balance Adjustment. Ví dụ truefalse | |||
| Hạn xử lý theo SLA SlaProcessingDeadline | Ngày giờ mục tiêu phải hoàn tất thanh toán. | ||
| Mô tả Lưu hạn chót theo hợp đồng hoặc quy định pháp luật để chi trả lương. Thuộc tính này được đối chiếu với dấu thời gian 'Payment Executed'. Dùng trường này để tính KPI 'SLA Processing Deadline Adherence' và xác định các nhóm trả lương có nguy cơ trễ hạn. Vì sao điều này quan trọng Mốc chính để đánh giá quy trình hoàn tất đúng hạn hay không. Lấy dữ liệu ở đâu Thường là trường được cấu hình (DFF) trong Payroll Definition hoặc được tính bằng cách lấy Check Date trừ đi X ngày. Ví dụ 2023-10-28T17:00:00Z2023-11-30T17:00:00Z | |||
| Người xử lý ProcessingUser | ID hoặc tên người thực hiện hoạt động. | ||
| Mô tả Ghi nhận danh tính của chuyên viên tính lương, quản lý hoặc tài khoản hệ thống đã kích hoạt hoạt động. Thông tin này hỗ trợ bảng điều khiển 'Payroll Specialist Workload Distribution'. Dữ liệu giúp xác định điểm nghẽn về nhân lực và nhu cầu đào tạo trong nhóm tính lương. Vì sao điều này quan trọng Hỗ trợ phân tích năng suất và cân bằng khối lượng công việc giữa các nhân sự. Lấy dữ liệu ở đâu Các cột CREATED_BY hoặc LAST_UPDATED_BY trong bảng giao dịch. Ví dụ sysadminj.smithpayroll_batch_userm.doe | |||
| Nhóm dữ liệu pháp lý LegislativeDataGroup | Phân vùng dữ liệu tính lương theo quốc gia hoặc môi trường pháp lý. | ||
| Mô tả Trong Oracle HCM Cloud, Legislative Data Group (LDG) phân vùng dữ liệu tính lương và dữ liệu liên quan. LDG thường tương ứng với một quốc gia hoặc vùng lãnh thổ có hệ thống pháp luật riêng. Thuộc tính này rất quan trọng khi lọc phân tích quy trình theo quốc gia, chẳng hạn như tính lương tại Mỹ so với Anh. Thuộc tính này thường được ánh xạ sang thuộc tính chung Country. Vì sao điều này quan trọng Quy định tuân thủ và luồng quy trình thường khác nhau đáng kể giữa các khu vực pháp lý. Lấy dữ liệu ở đâu Bảng PAY_ALL_PAYROLLS_F được kết hợp với các định nghĩa Legislative Data Group. Ví dụ Nhóm dữ liệu pháp lý của MỹLDG của AnhTính lương tại Pháp | |||
| Nhóm tính lương PayGroup | Nhóm nhân viên được gom lại để xử lý tính lương. | ||
| Mô tả Cho biết định nghĩa tính lương cụ thể áp dụng cho nhân viên, chẳng hạn 'Weekly Manufacturing' hoặc 'Monthly Corporate'. Thuộc tính này là cơ sở cho hầu hết các bảng điều khiển, giúp so sánh hiệu suất giữa các chu kỳ và tần suất tính lương. Vì sao điều này quan trọng Đối tượng cấu hình chính quyết định lịch tính lương. Lấy dữ liệu ở đâu Bảng PAY_ALL_PAYROLLS_F (Payroll Name). Ví dụ Mỹ, nửa tháng một lầnAnh, hàng thángCông đoàn, hàng tuần | |||
| Tên kỳ tính lương PayrollPeriodName | Tên cụ thể của khoảng thời gian tính lương. | ||
| Mô tả Cho biết chu kỳ cụ thể, chẳng hạn 'Monthly January 2024' hoặc 'Weekly Period 42'. Đây là thông tin thiết yếu cho 'SLA Deadline Compliance Monitor'. Trường này giúp nhóm các trường hợp của từng nhân viên vào đúng đợt tính lương để lập báo cáo tổng hợp. Vì sao điều này quan trọng Cần thiết để phân tích ở cấp đợt và theo dõi SLA. Lấy dữ liệu ở đâu Bảng PAY_TIME_PERIODS hoặc trường Time Period Name trong Payroll Definition. Ví dụ 2023 Hàng tháng 102023 Hàng tuần 42Đợt thưởng tháng 12 năm 2023 | |||
| Tên phòng ban DepartmentName | Đơn vị tổ chức nơi nhân viên làm việc. | ||
| Mô tả Cho biết phòng ban phụ trách nhân viên trong bản ghi tính lương. Đây là thông tin quan trọng đối với bảng điều khiển 'Timesheet Approval Efficiency'. Khi phân tích dữ liệu theo phòng ban, nhà phân tích có thể xác định đơn vị nào thường xuyên phê duyệt bảng chấm công trễ, khiến toàn bộ đợt tính lương bị chậm. Vì sao điều này quan trọng Giúp tìm nguyên nhân gốc rễ của các chậm trễ liên quan đến việc quản lý phê duyệt. Lấy dữ liệu ở đâu Được xác định từ bản ghi phân công của nhân viên có hiệu lực tại thời điểm chạy tính lương. Ví dụ Bán hàng Bắc MỹKỹ thuậtNhân sựHậu cần | |||
| Tổng lương trước khấu trừ GrossPayAmount | Tổng tiền lương trước khấu trừ được tính cho kỳ. | ||
| Mô tả Cho biết giá trị tiền lương trước khấu trừ được tính trong kỳ. Dữ liệu này được dùng trong các phân tích 'Tax and Benefit Calculation Accuracy' và 'Incentive Integration'. Nhà phân tích có thể đối chiếu các khoản chi trả giá trị cao với thời gian xử lý hoặc tỷ lệ lỗi. Vì sao điều này quan trọng Bổ sung thông tin tài chính cho phân tích process mining. Lấy dữ liệu ở đâu Bảng PAY_RUN_RESULT_VALUES, tổng hợp theo số dư Gross Pay. Ví dụ 5000.002350.5010000.00 | |||
| Cờ thay đổi hồi tố RetroactiveChangeFlag | Cho biết đợt tính lương có bao gồm khoản thanh toán hồi tố hay không. | ||
| Mô tả Cờ dạng đúng/sai, có giá trị true nếu bản ghi này xử lý các khoản 'Retropay'. Thông tin này giúp giải thích thời gian xử lý lâu hơn hoặc các ngoại lệ kiểm toán trong 'Process Path Variant Comparison'. Thay đổi hồi tố thường kích hoạt các phép tính lại phức tạp cho những kỳ trước. Vì sao điều này quan trọng Giúp nhận diện các trường hợp phức tạp vốn cần nhiều thời gian xử lý hơn. Lấy dữ liệu ở đâu Có các mục 'Retropay' trong PAY_ELEMENT_ENTRIES. Ví dụ truefalse | |||
| Khu vực pháp lý về thuế TaxJurisdiction | Tiểu bang, tỉnh hoặc địa phương cụ thể dùng để khai thuế. | ||
| Mô tả Cho biết cơ quan thuế chính liên quan đến bản ghi tính lương, chẳng hạn 'CA' cho California hoặc 'NY' cho New York. Thông tin này hỗ trợ bảng điều khiển 'Tax Compliance Processing Duration'. Dữ liệu giúp xác định quy trình tính và khai thuế ở khu vực nào phức tạp hơn hoặc mất nhiều thời gian hơn. Vì sao điều này quan trọng So sánh hiệu suất theo mức độ phức tạp của quy định. Lấy dữ liệu ở đâu Được xác định từ thẻ thuế của nhân viên hoặc địa chỉ nơi làm việc. Ví dụ CA-CaliforniaNY-New YorkTX-TexasLiên bang-Mỹ | |||
| Loại ngoại lệ kiểm toán AuditExceptionType | Loại lỗi hoặc cảnh báo được phát hiện trong quá trình kiểm toán. | ||
| Mô tả Phân loại vấn đề cụ thể được phát hiện trong hoạt động 'Audit Exception Flagged', chẳng hạn 'Negative Net Pay' hoặc 'Missing Tax ID'. Thuộc tính này hỗ trợ bảng điều khiển 'Audit Exception and Correction Analysis', giúp xác định các vấn đề thường gặp về chất lượng dữ liệu. Vì sao điều này quan trọng Rất quan trọng để tìm nguyên nhân gốc rễ của các vòng lặp làm lại. Lấy dữ liệu ở đâu Các cột Message hoặc Error Code trong nhật ký quy trình tính lương hoặc báo cáo ngoại lệ. Ví dụ Lương thực nhận âmThiếu SSNThông tin ngân hàng không hợp lệVượt giới hạn làm thêm giờ | |||
| Loại nhân viên EmployeeType | Phân loại nhân viên, chẳng hạn hưởng lương cố định, tính lương theo giờ hoặc nhà thầu. | ||
| Mô tả Phân loại bản ghi nhân viên. Đây là thông tin quan trọng đối với bảng điều khiển 'Digital Pay Slip Publishing Lag', vì mỗi loại nhân viên có thể áp dụng quy tắc xử lý hoặc mức độ ưu tiên khác nhau. Dữ liệu giúp lọc và so sánh hiệu suất quy trình giữa các nhóm nhân viên. Vì sao điều này quan trọng Các loại nhân viên khác nhau thường đi theo các biến thể quy trình khác nhau. Lấy dữ liệu ở đâu Loại phân công hoặc điều khoản tuyển dụng trong PER_ALL_ASSIGNMENTS_M. Ví dụ Toàn thời gian, lương cố địnhBán thời gian, tính lương theo giờNhà thầuLãnh đạo cấp cao | |||
| Số lần xem trước kết quả PreviewIterationCount | Số lần xem trước kết quả trước khi hoàn tất. | ||
| Mô tả Bộ đếm tăng lên mỗi khi hoạt động 'Payroll Result Previewed' diễn ra trong cùng một trường hợp. Đây là thước đo trực tiếp cho bảng điều khiển 'Payroll Preview Iteration Tracker', cho biết mức độ làm lại hoặc do dự trước khi phê duyệt. Vì sao điều này quan trọng Đo lường hiệu quả của giai đoạn xác thực. Lấy dữ liệu ở đâu Được tính trong quá trình chuyển đổi dữ liệu bằng cách đếm số lần xuất hiện của các hoạt động cụ thể theo từng Case ID. Ví dụ 1350 | |||
| Trạng thái SLA SlaStatus | Trạng thái phân loại về việc đáp ứng SLA (đúng hạn/trễ hạn). | ||
| Mô tả Được xác định bằng cách so sánh dấu thời gian 'Payment Executed' với 'SLA Processing Deadline'. Các giá trị có thể gồm 'On Time', 'At Risk' hoặc 'Breached'. Trường này giúp đơn giản hóa báo cáo cho 'SLA Deadline Compliance Monitor' bằng cách nhóm các trường hợp theo mức độ hiệu suất. Vì sao điều này quan trọng Chuyển các phép so sánh thời gian phức tạp thành nhóm trạng thái dễ xử lý. Lấy dữ liệu ở đâu Được tính bằng cách so sánh Dấu thời gian sự kiện với Hạn chót SLA. Ví dụ ĐạtQuá hạnSắp quá hạn | |||
Hoạt động trong quy trình tính lương
| Hoạt động | Mô tả | ||
|---|---|---|---|
| Đã bắt đầu tính lương | Bắt đầu quy trình chạy tính lương chính cho một định nghĩa tính lương và kỳ cụ thể. Đây là thời điểm chuyển từ thu thập dữ liệu sang xử lý. | ||
| Vì sao điều này quan trọng Đánh dấu thời điểm bắt đầu giai đoạn xử lý chính. Dùng để tính tổng thời gian chu kỳ thực thi kỹ thuật của quy trình tính lương. Lấy dữ liệu ở đâu Truy vấn bảng PAY_PAYROLL_ACTIONS với ACTION_TYPE là R (Run) hoặc Q (QuickPay) và ACTION_STATUS được đánh dấu là đã bắt đầu, hoặc suy ra từ ngày tạo. Thu thập Ghi nhận khi bản ghi PAY_PAYROLL_ACTIONS được thêm vào Loại sự kiện explicit | |||
| Đã tạo lệnh chuyển khoản ngân hàng | Tạo tệp EFT (chuyển tiền điện tử) hoặc đầu ra thanh toán tương tự. Đây là bước kỹ thuật tạo tệp lệnh chuyển tiền cho ngân hàng. | ||
| Vì sao điều này quan trọng Đo thời gian tạo tệp thanh toán. Chậm trễ ở bước này có thể khiến bạn lỡ giờ chốt giao dịch của ngân hàng. Lấy dữ liệu ở đâu Truy vấn PAY_PAYROLL_ACTIONS với ACTION_TYPE là M (Magnetic Tape), E (EFT) hoặc C (Check Writer). Thu thập Ghi nhận khi hành động EFT/Check hoàn tất Loại sự kiện explicit | |||
| Đã thực hiện thanh toán | Xác nhận cuối cùng rằng khoản thanh toán đã được xử lý. Trong Oracle, sự kiện này tương ứng với việc hoàn tất luồng thanh toán hoặc đối soát trong Cash Management. | ||
| Vì sao điều này quan trọng Đây là dấu thời gian chính để đánh giá mức độ tuân thủ SLA, qua đó xác định người lao động có được trả lương đúng hạn hay không. Lấy dữ liệu ở đâu Có thể suy ra từ Effective Date của hành động Bank Transfer hoặc lấy trực tiếp từ nhật ký đối soát Cash Management (CE_STATEMENT_LINES). Thu thập Ghi nhận theo ngày hiệu lực của hành động thanh toán hoặc sự kiện đối soát Loại sự kiện explicit | |||
| Đã thực hiện tính lương | Quy trình Calculate Payroll hoàn tất thành công, bao gồm tính toán từ tổng lương đến lương thực nhận. Sự kiện này cho biết thu nhập, khoản khấu trừ và thuế đã được tính cho đợt phân công công việc. | ||
| Vì sao điều này quan trọng Đây là cột mốc quan trọng cho biết dữ liệu đã sẵn sàng để xác nhận. Thời lượng dài ở bước này có thể cho thấy hệ thống hoạt động chậm hoặc công thức nhanh phức tạp. Lấy dữ liệu ở đâu Truy vấn PAY_PAYROLL_REL_ACTIONS, kết hợp với PAY_PAYROLL_ACTIONS, khi ACTION_TYPE là R hoặc Q và ACTION_STATUS chuyển thành C (Complete). Thu thập Ghi nhận khi trạng thái hành động Payroll Run được cập nhật thành Complete Loại sự kiện explicit | |||
| Đã tính khoản trả trước | Thực hiện quy trình Prepayments để phân phối lương thực nhận theo phương thức thanh toán người lao động đã chọn (séc, EFT, v.v.). Bước này xác nhận rằng các khoản đã tính có thể được thanh toán. | ||
| Vì sao điều này quan trọng Đây là bước nối giữa tính lương và chi trả. Lỗi ở đây thường cho thấy thiếu thông tin ngân hàng hoặc phương thức thanh toán không hợp lệ. Lấy dữ liệu ở đâu Truy vấn PAY_PAYROLL_ACTIONS với ACTION_TYPE là P (Prepayments) và trạng thái là Complete. Thu thập Ghi nhận khi hành động Prepayments hoàn tất Loại sự kiện explicit | |||
| Đã chuyển dữ liệu hạch toán chi phí | Chuyển kết quả hạch toán chi phí lương sang sổ cái. Đây là bước hoàn tất ghi nhận kế toán cho chu kỳ tính lương. | ||
| Vì sao điều này quan trọng Đảm bảo tuân thủ quy định tài chính và ghi nhận chính xác chi phí nhân công. Chậm trễ ở bước này khiến bộ phận Tài chính không thể chốt sổ. Lấy dữ liệu ở đâu Truy vấn PAY_PAYROLL_ACTIONS với ACTION_TYPE là T (Transfer to GL) và trạng thái là Complete. Thu thập Ghi nhận khi quy trình Transfer to GL hoàn tất Loại sự kiện explicit | |||
| Đã gắn cờ ngoại lệ kiểm toán | Ghi nhận thông báo lỗi hoặc cảnh báo trong giai đoạn tính lương hoặc xác nhận. Sự kiện này lưu lại các lỗi xác nhận cụ thể cần người xử lý. | ||
| Vì sao điều này quan trọng Cần theo dõi sự kiện này để xác định vấn đề về chất lượng dữ liệu. Nhiều ngoại lệ làm tăng khối lượng xử lý thủ công và nguy cơ vi phạm SLA. Lấy dữ liệu ở đâu Truy vấn bảng PAY_MESSAGE_LINES được liên kết với PAY_PAYROLL_REL_ACTION_ID tương ứng. Bảng này lưu lỗi và cảnh báo phát sinh trong các lần chạy. Thu thập Ghi nhận khi một bản ghi được thêm vào PAY_MESSAGE_LINES Loại sự kiện explicit | |||
| Đã gửi bảng chấm công | Sự kiện đầu tiên, khi người lao động hoặc quản lý gửi dữ liệu thời gian và công để xử lý. Trong Oracle HCM, sự kiện này được ghi nhận khi trạng thái bảng chấm công chuyển thành Submitted trong mô-đun Time and Labor. | ||
| Vì sao điều này quan trọng Đánh dấu thời điểm dữ liệu thô được đưa vào luồng xử lý tính lương. Chậm trễ ở bước này sẽ ảnh hưởng đến các bước sau, khiến chuyên viên tính lương có ít thời gian hơn để xác nhận kết quả. Lấy dữ liệu ở đâu Truy vấn bảng HWM_TM_REC_GRP_DTLS hoặc khung nhìn HXT_TIMECARDS khi trạng thái chuyển thành SUBMITTED. Dùng dấu thời gian gửi. Thu thập Ghi nhận khi trạng thái trong Time and Labor chuyển thành SUBMITTED Loại sự kiện explicit | |||
| Đã hoàn tất kê khai thuế | Tạo các tệp thuế theo quy định, chẳng hạn như Third Party Quarterly Tax File. Bước này đảm bảo tuân thủ quy định trong kỳ trả lương. | ||
| Vì sao điều này quan trọng Đây là sự kiện quan trọng đối với KPI thời gian xử lý tuân thủ thuế. Nếu không hoàn tất, tổ chức có thể bị phạt. Lấy dữ liệu ở đâu Truy vấn PAY_PAYROLL_ACTIONS để tìm các hành động thuộc nhóm dữ liệu luật định cụ thể liên quan đến báo cáo thuế, chẳng hạn như US Third Party Tax Filing. Thu thập Ghi nhận khi luồng báo cáo thuế cụ thể hoàn tất Loại sự kiện explicit | |||
| Đã nhập dữ liệu thưởng | Tạo các mục nhập thành phần cho khoản lương biến đổi như tiền thưởng hoặc hoa hồng thông qua trình tải theo lô hoặc nhập HDL. Sự kiện này thể hiện việc tích hợp dữ liệu đãi ngộ bên ngoài vào lần chạy tính lương. | ||
| Vì sao điều này quan trọng Theo dõi tốc độ tích hợp khoản lương biến đổi. Nhập dữ liệu muộn thường buộc phải chạy thêm bảng lương hoặc sửa thủ công. Lấy dữ liệu ở đâu Truy vấn PAY_BATCH_HEADERS để kiểm tra trạng thái hoàn tất nhập dữ liệu, hoặc theo dõi việc tạo PAY_ELEMENT_ENTRIES_F có tham chiếu đến hệ thống nguồn cụ thể. Thu thập Ghi nhận khi quy trình nhập mục thành phần theo lô hoàn tất thành công Loại sự kiện explicit | |||
| Đã phát hành phiếu lương | Thời điểm phiếu lương hiển thị cho người lao động trong Self Service. Việc này diễn ra sau Archiver và có thể cần chạy quy trình 'Generate Payslip' riêng. | ||
| Vì sao điều này quan trọng Sự kiện này ảnh hưởng đến mức độ hài lòng của người lao động. Phiếu lương có sau khi thanh toán quá lâu sẽ làm phát sinh yêu cầu hỗ trợ. Lấy dữ liệu ở đâu Truy vấn bảng Documents of Record (HR_DOCUMENTS_OF_RECORD) hoặc kiểm tra quy trình Generate Payslip hoàn tất trong PAY_PAYROLL_ACTIONS. Thu thập Ghi nhận khi quy trình tạo PDF phiếu lương hoàn tất Loại sự kiện explicit | |||
| Đã phê duyệt bảng chấm công | Xác nhận rằng quản lý đã xem xét và phê duyệt dữ liệu thời gian đã gửi. Thay đổi trạng thái này kích hoạt việc chuyển dữ liệu sang các mục nhập thành phần tính lương. | ||
| Vì sao điều này quan trọng Sự kiện này rất quan trọng để đo thời gian chờ quản lý phê duyệt. Chậm trễ ở đây là một trong những nguyên nhân chính dẫn đến điều chỉnh lương truy lĩnh ở các kỳ tiếp theo. Lấy dữ liệu ở đâu Truy vấn bảng HWM_TM_REC_GRP_DTLS hoặc khung nhìn HXT_TIMECARDS khi trạng thái chuyển thành APPROVED. So sánh dấu thời gian phê duyệt với dấu thời gian gửi. Thu thập Ghi nhận khi trạng thái trong Time and Labor chuyển thành APPROVED Loại sự kiện explicit | |||
| Đã phê duyệt lần chạy tính lương | Phê duyệt chính thức bảng tổng hợp tính lương hoặc luồng trong Payroll Dashboard. Việc này thường diễn ra sau khi xem xét các báo cáo xác nhận và trước khi tạo tệp ngân hàng. | ||
| Vì sao điều này quan trọng Đánh dấu thời điểm quản lý phê duyệt. Khoảng thời gian từ lúc tính lương đến khi phê duyệt là thời gian xác minh. Lấy dữ liệu ở đâu Truy vấn PAY_REQ_FLOW_INSTANCES để tìm thay đổi trạng thái hoặc thời điểm hoàn tất một tác vụ cụ thể trong Payroll Flow Pattern đã xác định. Thu thập Ghi nhận khi trạng thái Flow Instance chuyển thành Completed/Approved Loại sự kiện explicit | |||
| Đã sửa hồ sơ tính lương | Cập nhật thủ công các mục nhập thành phần hoặc dữ liệu đợt phân công sau lần chạy tính lương đầu tiên nhưng trước khi chốt. Hoạt động này thể hiện việc làm lại để khắc phục lỗi hoặc ngoại lệ. | ||
| Vì sao điều này quan trọng Sự kiện này cho thấy quy trình chưa hiệu quả và dữ liệu có vấn đề. Giảm hoạt động này là yếu tố then chốt để cải thiện tỷ lệ tính lương chính xác ngay lần đầu. Lấy dữ liệu ở đâu Suy ra bằng cách xác định các cập nhật trong PAY_ELEMENT_ENTRIES_F có Last Update Date nằm giữa ngày chạy tính lương đầu tiên và ngày Prepayments. Thu thập So sánh dấu thời gian cập nhật mục nhập thành phần với dấu thời gian chạy tính lương Loại sự kiện inferred | |||
| Đã tạo kết quả lưu trữ | Quy trình Archive Periodic Payroll Results hoàn tất. Ảnh chụp này khóa dữ liệu để lập báo cáo và tạo phiếu lương. | ||
| Vì sao điều này quan trọng Đây là điều kiện kỹ thuật cần có để tạo phiếu lương và báo cáo theo quy định. Sự kiện này xác nhận dữ liệu đã được chốt. Lấy dữ liệu ở đâu Truy vấn PAY_PAYROLL_ACTIONS với ACTION_TYPE là X (Archive) và trạng thái là Complete. Thu thập Ghi nhận khi hành động Archive hoàn tất Loại sự kiện explicit | |||
| Đã thực hiện QuickPay | Chạy tính lương cho một người (QuickPay), thường dùng để kiểm tra các chỉnh sửa. Hoạt động này được dùng thay cho sự kiện xem trước kết quả tính lương. | ||
| Vì sao điều này quan trọng Nhiều lần chạy QuickPay cho cùng một người cho thấy quy trình tính lương đang dựa vào thử sai thay vì Lấy dữ liệu ở đâu Truy vấn PAY_PAYROLL_ACTIONS với ACTION_TYPE là Q (QuickPay). Đếm số lần chạy cho từng người lao động trong mỗi kỳ tính lương. Thu thập Ghi nhận khi hành động QuickPay được lưu trong PAY_PAYROLL_ACTIONS Loại sự kiện explicit | |||
Hướng dẫn trích xuất
Các bước
Truy cập Data Exchange: Đăng nhập Oracle HCM Cloud bằng tài khoản có vai trò 'Human Capital Management Integration Specialist'. Vào My Client Groups > Data Exchange > Extract Definitions.
Tạo trích xuất mới: Nhấp biểu tượng '+' để tạo trích xuất mới. Đặt tên là 'ProcessMind_Payroll_Extract'. Chọn 'Payroll' làm consumer và 'HR Archive' làm category để truy cập dữ liệu lịch sử về các thao tác tính lương.
Xác định nhóm dữ liệu: Tạo Root Data Group dựa trên User Entity
PAY_PAYROLL_REL_UE(Payroll Relationship). Nhóm này liên kết dữ liệu trích xuất với quan hệ tính lương của nhân viên. Tạo các nhóm dữ liệu con choPAY_ACTION_INFORMATION_UE,PAY_ELEMENT_ENTRY_UEvàHWM_MEASURE_DAY_V_UE(dữ liệu thời gian và lao động).Cấu hình bản ghi trích xuất: Trong các nhóm dữ liệu, xác định bản ghi để chuyển dữ liệu phân cấp thành dạng phẳng. Bạn cần tạo bản ghi riêng cho từng loại hoạt động, chẳng hạn một bản ghi lọc sự kiện 'Time Card' và một bản ghi khác cho 'Run Results'.
Thêm logic SQL bằng FastFormula hoặc BIP: Do việc chuyển dữ liệu tính lương phân cấp thành nhật ký sự kiện tuyến tính khá phức tạp, cách đáng tin cậy nhất là dùng 'Extract Delivery Option' để gọi báo cáo BI Publisher. Nhờ đó, bạn có thể dùng SQL trong phần 'Query' bên dưới làm Data Model. Cách này phù hợp hơn bộ lọc giao diện có sẵn khi cần tạo nhật ký sự kiện thống nhất.
Tạo Data Model trong BI Publisher: Vào Tools > Reports and Analytics > Browse Catalog. Tạo Data Model mới. Dán truy vấn SQL bên dưới. Tạo tham số cho
bind_start_datevàbind_end_date.Liên kết trích xuất với BIP: Trong thẻ 'Delivery' của Extract Definition, tạo tùy chọn phân phối. Chọn 'PDF' hoặc 'XML' làm định dạng đầu ra (ProcessMind ưu tiên CSV, nhưng bạn có thể chuyển đổi đầu ra BIP). Chọn báo cáo BI Publisher đã tạo ở bước trước.
Xác định tham số: Trong Extract Execution Tree, thêm tham số Start Date và End Date để truyền động vào truy vấn BI Publisher.
Xác thực và gửi: Xác thực Extract Definition để kiểm tra lỗi. Nhấp 'Submit Extract'. Nhập tham số, chẳng hạn 90 ngày gần nhất.
Theo dõi quy trình: Vào 'View Extract Results'. Chờ trạng thái chuyển thành 'Succeeded'.
Tải đầu ra: Tải tệp XML/CSV được tạo. Mở tệp để kiểm tra cấu trúc có các cột cần thiết như PayrollRecord, ActivityName, EventTimestamp, v.v.
Định dạng cho ProcessMind: Nếu đầu ra là XML, chuyển thành tệp CSV dạng phẳng và bảo đảm tiêu đề cột khớp với yêu cầu 'Attributes to include'. Tải tệp kết quả lên ProcessMind.
Cấu hình
- Chế độ trích xuất: Chỉ thay đổi hoặc trích xuất toàn bộ. Khi tải dữ liệu lần đầu, hãy chọn trích xuất toàn bộ. Với các lần cập nhật hằng ngày, cấu hình 'Changes Only' dựa trên Last Update Date.
- Legislative Data Group (LDG): Bạn nên lọc theo LDG nếu hệ thống hỗ trợ nhiều quốc gia, vì định nghĩa bảng lương khác nhau tùy theo luật pháp.
- Khoảng thời gian: Đặt
bind_start_datevàbind_end_dateđể bao quát ít nhất 3-6 tháng. Nhờ đó, process mining có thể ghi nhận đầy đủ thời gian chu kỳ. - Kích thước lô: Với bảng lương khối lượng lớn (trên 10.000 nhân viên), đặt kích thước lô trong Extract Definition là 2.000 để tránh hết thời gian chờ.
- Ngày hiệu lực: Các bảng tính lương có ngày hiệu lực. Logic truy vấn xử lý rõ
effective_start_datevàeffective_end_dateđể lấy đúng phiên bản lịch sử của bản ghi. - Bảo mật: Tài khoản chạy trích xuất phải có hồ sơ bảo mật dữ liệu cho phép xem tất cả bảng lương và phòng ban cần phân tích.
Truy vấn mẫu 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 Các bước
- Đăng nhập Oracle BI Publisher: Truy cập môi trường Oracle Cloud và vào Tools > Reports and Analytics. Nhấp Browse Catalog để mở giao diện BI Publisher.
- Tạo Data Model: Nhấp New (góc trên bên trái) rồi chọn Data Model. Đây là nơi chứa logic trích xuất SQL.
- Tạo SQL Data Set: Trong thẻ Diagram, nhấp biểu tượng New Data Set và chọn SQL Query.
- Cấu hình nguồn dữ liệu: Đặt tên cho data set, chẳng hạn
ProcessMind_Payroll_Extract. Đặt Data Source làApplicationDB_HCM(hoặc kết nối HCM Application Database cụ thể của bạn). Giữ loại là Standard SQL. - Nhập truy vấn: Sao chép toàn bộ tập lệnh SQL trong phần Query bên dưới và dán vào ô SQL Query. Không đưa định dạng markdown vào.
- Xác định tham số: Truy vấn dùng các biến liên kết
:p_start_datevà:p_end_date. Trong thẻ Parameters của Data Model, tạo hai tham số này với kiểu Date để lọc khoảng thời gian trích xuất, chẳng hạn theoppa.EFFECTIVE_DATE. - Kiểm tra cấu trúc dữ liệu: Nhấp OK. Chuyển sang thẻ Data trong trình chỉnh sửa Data Model. Nhập ngày mẫu, chẳng hạn
2023-01-01đến2023-03-31, rồi nhấp View. Kiểm tra đầu ra có các hàng chứaPayrollRecord,ActivityNamevàEventTimestamp. - Lưu Data Model: Lưu mô hình vào thư mục dùng chung, chẳng hạn
/Shared Folders/Custom/ProcessMining. - Tạo báo cáo để xuất dữ liệu: Nhấp Create Report và chọn Data Model vừa lưu. Dùng Report Wizard để tạo bố cục bảng đơn giản gồm tất cả các cột. Bỏ chọn 'Show Grand Totals'.
- Xuất CSV: Mở báo cáo trong Report Viewer. Nhấp menu Actions (biểu tượng bánh răng) > Export > Data > CSV.
- Chuyển đổi: Mở tệp CSV. Nếu định dạng ngày chưa được chuyển tự động, hãy đặt về ISO 8601 (
YYYY-MM-DD HH:MM:SS). Nếu dán SQL chính xác, bạn không cần chỉnh sửa cấu trúc thêm. - Tải lên: Nhập tệp CSV kết quả vào ProcessMind và ánh xạ các cột theo Data Requirements.
Cấu hình
- Kết nối nguồn dữ liệu: Phải dùng
ApplicationDB_HCMhoặc nguồn dữ liệu JNDI tương đương có quyền đọc các schemaPAY_vàPER_. - Khoảng thời gian: Nên trích xuất dữ liệu trong 3-6 tháng để ghi nhận đầy đủ các chu kỳ tính lương. Dùng tham số
:p_start_datevà:p_end_dateđể điều chỉnh khoảng thời gian tải dữ liệu. - Legislative Data Group (LDG): Theo mặc định, truy vấn trích xuất dữ liệu từ tất cả LDG. Nếu bạn vận hành ở nhiều quốc gia, hãy cân nhắc thêm bộ lọc
AND ppa.LEGISLATIVE_DATA_GROUP_ID = [Your_LDG_ID]để phân vùng dữ liệu. - Hiệu suất: Truy vấn đọc các bảng có khối lượng dữ liệu lớn (
PAY_RUN_RESULTS,PAY_ASSIGNMENT_ACTIONS). Để tránh BI Publisher hết thời gian chờ, không nên chọn khoảng thời gian quá dài, chẳng hạn hơn 1 năm. - Bảo mật: Người chạy báo cáo cần có quyền Data Access Set đối với các định nghĩa bảng lương cần dùng.
Truy vấn mẫu 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 Bạn đã sẵn sàng bắt đầu chưa?
Dùng mẫu dữ liệu này để hiểu rõ các chu kỳ tính lương và cải thiện hoạt động. Bắt đầu tối ưu hiệu suất và nâng cao độ chính xác của báo cáo ngay hôm nay.
Tối ưu quy trình tính lương trên Oracle HCM ngay hôm nay
Rút ngắn 30% thời gian chu kỳ tính lương và loại bỏ điểm nghẽn.
Không cần thẻ tín dụng. Thiết lập chỉ trong vài phút.