Szablon danych do naliczania wynagrodzeń
Szablon danych do naliczania wynagrodzeń
- Pola danych do analizy list płac
- Szczegółowe śledzenie działań na potrzeby mapowania cyklu życia procesu
- Szczegółowe wskazówki dotyczące ekstrakcji danych z Oracle HCM Cloud Payroll
Atrybuty procesu naliczania wynagrodzeń
| Nazwa | Opis | ||
|---|---|---|---|
| Data ostatniej aktualizacji danych LastDataUpdate | Znacznik czasu ostatniej modyfikacji rekordu w źródłowej bazie danych. | ||
| Opis Informuje, jak aktualne są dane używane w analizie. Nie jest to to samo co znacznik czasu zdarzenia. Wskazuje, kiedy wiersz w bazie danych został ostatnio zmieniony przez proces ETL lub aktualizację systemu. Pozwala sprawdzić aktualność danych i diagnozować opóźnienia ekstrakcji. Dlaczego to ważne Pozwala analitykom sprawdzić, czy pracują na danych bieżących, czy nieaktualnych. Skąd pobrać Kolumna LAST_UPDATE_DATE, występująca w niemal wszystkich tabelach Oracle HCM. Przykłady 2023-10-02T12:00:00Z2023-10-06T01:00:00Z | |||
| Nazwa czynności ActivityName | Konkretna czynność lub zdarzenie w cyklu płacowym. | ||
| Opis Atrybut określa nazwę zdarzenia w procesie płacowym. Przykłady: „Przesłanie karty czasu pracy”, „Rozpoczęcie naliczania wynagrodzeń” i „Realizacja płatności”. To podstawowy wymiar wykorzystywany do odkrywania procesów i analizy wariantów. W Oracle HCM Cloud nazwa jest często wyznaczana na podstawie Action Type lub Action Status w tabelach działań płacowych. Dlaczego to ważne Określa, co dzieje się w procesie, i pozwala odtworzyć mapę procesu. Skąd pobrać Wyznaczana na podstawie kodu ACTION_TYPE w PAY_PAYROLL_ACTIONS lub zmian statusu w dziennikach audytowych. Przykłady Rozpoczęcie naliczania wynagrodzeńZatwierdzenie karty czasu pracyWygenerowanie przelewu bankowegoWykrycie wyjątku audytowego | |||
| Rekord płacowy PayrollRecord | Unikalny identyfikator pracownika w określonym okresie płacowym. | ||
| Opis Rekord płacowy pełni funkcję centralnego identyfikatora sprawy w analizie process mining. Jest to połączenie lub unikalny klucz obejmujący identyfikator przypisania pracownika i identyfikator okresu płacowego. Atrybut grupuje wszystkie czynności związane z wypłatą wynagrodzenia jednemu pracownikowi w danym cyklu, od przesłania karty czasu pracy po końcowy przelew bankowy i rozliczenie podatkowe. Dzięki temu można odróżnić wypłatę dla tej samej osoby w styczniu od wypłaty w lutym. Dlaczego to ważne Pełni funkcję identyfikatora sprawy (Case ID), łącząc rozproszone zdarzenia w jedną instancję procesu na potrzeby analizy. Skąd pobrać Tworzony na podstawie PAY_ASSIGNMENT_ACTIONS lub połączenia Person Number i Payroll Period Name w Oracle HCM. Przykłady EMP1001-2023-M01EMP5992-2023-W42300000018273645US-NY-A123-JAN23 | |||
| System źródłowy SourceSystem | Nazwa systemu, w którym powstało zdarzenie. | ||
| Opis Wskazuje oprogramowanie lub moduł, który wygenerował dany punkt danych. W tym procesie główną wartością jest „Oracle HCM Cloud Payroll”. W złożonym środowisku może jednak pozwalać odróżnić główny silnik płacowy od modułu ewidencji czasu pracy i rozliczania pracy lub zewnętrznego interfejsu bankowego. Dlaczego to ważne Dostarcza informacji o pochodzeniu danych, szczególnie przy integracji danych z podsystemów ewidencji czasu pracy lub bankowości. Skąd pobrać Wartość wpisana na stałe podczas ekstrakcji lub wyznaczona na podstawie identyfikatorów interfejsów. Przykłady Oracle HCM Cloud PayrollOracle Time and LaborZewnętrzny interfejs bankowy | |||
| Znacznik czasu zdarzenia EventTimestamp | Dokładna data i godzina wykonania czynności. | ||
| Opis Zapisuje dokładny moment wykonania czynności. Jest niezbędny do obliczania czasu trwania i czasu realizacji oraz wykrywania wąskich gardeł. W przypadku czynności automatycznych jest to czas wykonania przez system. Przy czynnościach ręcznych, takich jak zatwierdzanie, jest to znacznik czasu działania użytkownika zapisany w dzienniku transakcji. Dlaczego to ważne Niezbędny do chronologicznego uporządkowania zdarzeń i obliczania wszystkich KPI opartych na czasie. Skąd pobrać Kolumny CREATION_DATE lub ACTION_DATE w odpowiednich tabelach transakcji, takich jak PAY_ACTION_INFORMATION. Przykłady 2023-10-01T08:30:00Z2023-10-01T14:15:22Z2023-10-05T09:00:00Z | |||
| Czy wykonano korektę ręczną IsManualCorrection | Flaga wskazująca, czy dana czynność wymagała ręcznej interwencji. | ||
| Opis Flaga logiczna przyjmująca wartość true dla czynności takich jak „Skorygowano dane” lub „Skorygowano rekord płacowy”. Służy do obliczania KPI „Odsetek ręcznych korekt danych” i „Odsetek poprawnie naliczonych płac za pierwszym razem”. Dlaczego to ważne Pozwala odróżnić przetwarzanie bezpośrednie od ręcznego ponownego przetwarzania. Skąd pobrać Wartość wyznaczana na podstawie nazwy czynności lub określonych typów działań wskazujących na korekty, na przykład QuickPay lub korekta salda. Przykłady truefalse | |||
| Grupa danych legislacyjnych LegislativeDataGroup | Dzieli dane płacowe według kraju lub otoczenia regulacyjnego. | ||
| Opis W Oracle HCM Cloud grupa danych legislacyjnych (Legislative Data Group, LDG) dzieli dane płacowe i powiązane z nimi informacje. Zazwyczaj odpowiada krajowi lub terytorium, którego przepisy mają zastosowanie. Ten atrybut jest niezbędny do filtrowania analizy procesu według kraju, na przykład płac w USA lub Wielkiej Brytanii. Często jest mapowany na ogólny atrybut Country. Dlaczego to ważne Zasady zgodności i przebieg procesu często znacznie różnią się w zależności od jurysdykcji. Skąd pobrać Tabela PAY_ALL_PAYROLLS_F połączona z definicjami grup danych legislacyjnych. Przykłady Amerykańska grupa danych legislacyjnychBrytyjska grupa LDGPłace we Francji | |||
| Grupa płacowa PayGroup | Logiczna grupa pracowników, dla której naliczane są płace. | ||
| Opis Wskazuje konkretną definicję płac, do której przypisano pracownika, na przykład „Tygodniowa, produkcja” lub „Miesięczna, centrala”. Ten atrybut ma znaczenie dla niemal wszystkich dashboardów. Umożliwia porównywanie wyników różnych cykli i częstotliwości naliczania płac. Dlaczego to ważne Podstawowy obiekt konfiguracyjny określający harmonogram naliczania płac. Skąd pobrać Tabela PAY_ALL_PAYROLLS_F (nazwa płac). Przykłady USA, dwa razy w miesiącuWielka Brytania, miesięcznieTygodniowa, pracownicy zrzeszeni w związku zawodowym | |||
| Nazwa działu DepartmentName | Jednostka organizacyjna, w której pracuje pracownik. | ||
| Opis Wskazuje dział odpowiedzialny za pracownika powiązanego z rekordem płacowym. Ten atrybut ma istotne znaczenie dla dashboardu „Efektywność zatwierdzania kart czasu pracy”. Podział danych według działów pozwala analitykom ustalić, które jednostki organizacyjne regularnie opóźniają zatwierdzanie kart czasu pracy, a przez to opóźniają naliczanie płac. Dlaczego to ważne Pozwala analizować przyczyny opóźnień związanych z zatwierdzaniem przez kierowników. Skąd pobrać Wartość wyznaczana na podstawie przypisania pracownika obowiązującego w chwili naliczania płac. Przykłady Sprzedaż w Ameryce PółnocnejDział inżynieryjnyZasoby ludzkieLogistyka | |||
| Nazwa okresu płacowego PayrollPeriodName | Nazwa konkretnego przedziału czasu, którego dotyczy naliczanie płac. | ||
| Opis Wskazuje konkretny cykl, na przykład „Miesięczny, styczeń 2024” lub „Tygodniowy, okres 42”. Jest niezbędny dla dashboardu „Monitor zgodności z terminem SLA”. Pozwala grupować przypadki poszczególnych pracowników według odpowiednich przebiegów wsadowych i tworzyć raporty zbiorcze. Dlaczego to ważne Niezbędny do analizy na poziomie partii i monitorowania SLA. Skąd pobrać Tabela PAY_TIME_PERIODS lub nazwa okresu w definicji płac. Przykłady 2023, okres miesięczny 102023, okres tygodniowy 42Naliczanie premii za grudzień 2023 | |||
| Termin przetwarzania SLA SlaProcessingDeadline | Docelowa data i godzina realizacji płatności. | ||
| Opis Zapisuje umowny lub prawny termin wypłaty wynagrodzenia. Ten atrybut jest porównywany ze znacznikiem czasu zdarzenia „Zrealizowano płatność”. Służy do obliczania KPI „Terminowość przetwarzania zgodnie z SLA” i identyfikowania grup płacowych zagrożonych opóźnieniem. Dlaczego to ważne Podstawowy punkt odniesienia przy ocenie, czy proces zakończył się powodzeniem, czy niepowodzeniem pod względem terminowości. Skąd pobrać Zazwyczaj skonfigurowane pole (DFF) w definicji płac lub wartość wyznaczana przez odjęcie X dni od daty czeku. Przykłady 2023-10-28T17:00:00Z2023-11-30T17:00:00Z | |||
| Użytkownik przetwarzający ProcessingUser | Identyfikator lub nazwa użytkownika wykonującego daną czynność. | ||
| Opis Zapisuje tożsamość specjalisty ds. płac, kierownika lub konta systemowego, które zainicjowało daną czynność. Dane te są wykorzystywane w dashboardzie „Rozkład obciążenia specjalistów ds. płac”. Pomagają wykrywać wąskie gardła związane z zasobami oraz potrzeby szkoleniowe zespołu płacowego. Dlaczego to ważne Umożliwia analizę produktywności zasobów i równoważenie obciążenia pracą. Skąd pobrać Kolumny CREATED_BY lub LAST_UPDATED_BY w tabelach transakcyjnych. Przykłady sysadminj.smithpayroll_batch_userm.doe | |||
| Wynagrodzenie brutto GrossPayAmount | Łączna kwota wynagrodzenia brutto obliczona za dany okres. | ||
| Opis Wartość pieniężna wynagrodzenia brutto obliczonego w danym cyklu. Jest wykorzystywana w analizach „Dokładność obliczania podatków i świadczeń” oraz „Integracja premii”. Pozwala analitykom sprawdzić, czy wysokie kwoty wypłat wiążą się z dłuższym czasem przetwarzania lub większą liczbą błędów. Dlaczego to ważne Dostarcza kontekstu finansowego do analizy procesu metodą process mining. Skąd pobrać Tabela PAY_RUN_RESULT_VALUES, zsumowana dla salda wynagrodzenia brutto. Przykłady 5000.002350.5010000.00 | |||
| Flaga zmiany z mocą wsteczną RetroactiveChangeFlag | Wskazuje, czy naliczanie płac obejmuje wypłaty z mocą wsteczną. | ||
| Opis Flaga logiczna przyjmująca wartość true, jeśli w tym rekordzie przetwarzane są składniki „Retropay”. Pomaga wyjaśnić dłuższy czas przetwarzania lub wyjątki audytowe w analizie „Porównanie wariantów przebiegu procesu”. Zmiany z mocą wsteczną często wymagają złożonych przeliczeń obejmujących wcześniejsze okresy. Dlaczego to ważne Pozwala identyfikować złożone przypadki, których obsługa z natury wymaga więcej czasu. Skąd pobrać Obecność wpisów składnika „Retropay” w tabeli PAY_ELEMENT_ENTRIES. Przykłady truefalse | |||
| Jurysdykcja podatkowa TaxJurisdiction | Stan, prowincja lub miejscowość właściwa dla rozliczenia podatkowego. | ||
| Opis Wskazuje główny organ podatkowy powiązany z rekordem płacowym, na przykład „CA” dla Kalifornii lub „NY” dla Nowego Jorku. Atrybut ten jest wykorzystywany w dashboardzie „Czas przetwarzania rozliczeń podatkowych”. Pomaga ustalić, czy w niektórych regionach obliczanie i składanie deklaracji podatkowych jest bardziej złożone lub trwa dłużej. Dlaczego to ważne Pozwala porównywać wyniki z uwzględnieniem złożoności regulacyjnej. Skąd pobrać Wartość wyznaczana na podstawie karty podatkowej pracownika lub adresu miejsca pracy. Przykłady CA-KaliforniaNY-Nowy JorkTX-TeksasFederalny-USA | |||
| Liczba iteracji podglądu PreviewIterationCount | Liczba podglądów wyników przed ich zatwierdzeniem. | ||
| Opis Licznik zwiększany za każdym razem, gdy dla tego samego przypadku wystąpi czynność „Wyświetlono podgląd wyniku naliczania płac”. To bezpośrednia miara wykorzystywana w dashboardzie „Monitor iteracji podglądu płac”. Pokazuje skalę ponownej pracy lub wahania przed zatwierdzeniem. Dlaczego to ważne Pozwala określić efektywność etapu weryfikacji. Skąd pobrać Wartość obliczana podczas transformacji danych przez zliczenie wystąpień określonych czynności dla każdego identyfikatora Case. Przykłady 1350 | |||
| Rodzaj pracownika EmployeeType | Klasyfikacja pracownika, na przykład pracownik etatowy, godzinowy lub kontraktor. | ||
| Opis Klasyfikuje rekord pracownika. Ma to istotne znaczenie dla dashboardu „Opóźnienie publikacji elektronicznych pasków płacowych”, ponieważ dla różnych rodzajów pracowników mogą obowiązywać inne zasady przetwarzania i terminy. Pozwala filtrować analizę i porównywać wyniki procesu dla różnych grup pracowników. Dlaczego to ważne Różne rodzaje pracowników często przechodzą przez różne warianty procesu. Skąd pobrać Kategoria przypisania lub warunki zatrudnienia w tabeli PER_ALL_ASSIGNMENTS_M. Przykłady Pracownik etatowy, pełny wymiar czasu pracyPracownik godzinowy, niepełny wymiar czasu pracyKontraktorKadry kierownicze | |||
| Rodzaj wyjątku wykrytego podczas audytu AuditExceptionType | Kategoria błędu lub ostrzeżenia wykrytego podczas audytu. | ||
| Opis Klasyfikuje konkretny problem wykryty podczas czynności „Wykryto wyjątek audytowy”, na przykład „Ujemne wynagrodzenie netto” lub „Brak identyfikatora podatkowego”. Atrybut ten wspiera dashboard „Analiza wyjątków audytowych i korekt”, wskazując najczęstsze problemy z jakością danych. Dlaczego to ważne Niezbędny do analizy przyczyn ponownego przetwarzania. Skąd pobrać Kolumny Message lub Error Code w dziennikach procesu płacowego albo raportach o wyjątkach. Przykłady Ujemne wynagrodzenie nettoBrak numeru SSNNieprawidłowe dane bankowePrzekroczony limit nadgodzin | |||
| Status SLA SlaStatus | Status dotrzymania SLA: dotrzymano lub przekroczono termin. | ||
| Opis Wartość wyznaczana przez porównanie znacznika czasu zdarzenia „Zrealizowano płatność” z terminem przetwarzania SLA. Możliwe wartości to „W terminie”, „Zagrożony opóźnieniem” lub „Po terminie”. Ułatwia raportowanie w dashboardzie „Monitor zgodności z terminem SLA”, grupując przypadki według wyników. Dlaczego to ważne Upraszcza złożone porównania czasu, sprowadzając je do kategorii, na podstawie których można podjąć działania. Skąd pobrać Wartość obliczana przez porównanie znacznika czasu zdarzenia z terminem SLA. Przykłady Dotrzymano terminuPo terminieTermin zagrożony | |||
Działania w procesie naliczania wynagrodzeń
| Działanie | Opis | ||
|---|---|---|---|
| Obliczenie zaliczek na wypłatę | Wykonanie procesu Prepayments, który rozdziela wynagrodzenie netto między wybrane przez pracownika metody płatności, takie jak czek lub EFT. Potwierdza, że obliczone kwoty można wypłacić. | ||
| Dlaczego to ważne Łączy naliczenie wynagrodzeń z wypłatą. Błędy na tym etapie zwykle wskazują na brak danych bankowych lub nieprawidłową metodę płatności. Skąd pobrać Należy odpytać PAY_PAYROLL_ACTIONS, gdzie ACTION_TYPE ma wartość P (Prepayments), a status to Complete. Rejestrowanie Rejestrowane po zakończeniu działania Prepayments Typ zdarzenia explicit | |||
| Realizacja płatności | Końcowe potwierdzenie realizacji płatności. W Oracle odpowiada zakończeniu workflow płatności lub uzgodnieniu w Cash Management. | ||
| Dlaczego to ważne Podstawowy znacznik czasu do oceny zgodności z SLA. Pozwala ustalić, czy pracownicy otrzymali wynagrodzenie na czas. Skąd pobrać Można go ustalić na podstawie Effective Date działania Bank Transfer lub bezpośrednio z dzienników uzgodnień w Cash Management (CE_STATEMENT_LINES). Rejestrowanie Rejestrowane na podstawie daty obowiązywania działania płatniczego lub zdarzenia uzgodnienia Typ zdarzenia explicit | |||
| Rozpoczęcie naliczania wynagrodzeń | Uruchomienie głównego procesu naliczania wynagrodzeń dla określonej definicji płac i okresu. Oznacza przejście od zbierania danych do ich przetwarzania. | ||
| Dlaczego to ważne Wyznacza początek intensywnego przetwarzania danych. Służy do obliczenia całkowitego czasu technicznej realizacji naliczania płac. Skąd pobrać Należy odpytać tabelę PAY_PAYROLL_ACTIONS, gdzie ACTION_TYPE ma wartość R (Run) lub Q (QuickPay), a ACTION_STATUS wskazuje rozpoczęcie procesu (lub wywnioskować je z daty utworzenia). Rejestrowanie Rejestrowane po dodaniu rekordu do PAY_PAYROLL_ACTIONS Typ zdarzenia explicit | |||
| Wygenerowanie przelewu bankowego | Wygenerowanie pliku EFT (Electronic Funds Transfer) lub innego pliku płatniczego. Na tym etapie tworzony jest plik z dyspozycjami dla banku. | ||
| Dlaczego to ważne Pozwala mierzyć czas generowania pliku płatniczego. Opóźnienia mogą spowodować przekroczenie godzin granicznych banku. Skąd pobrać Należy odpytać PAY_PAYROLL_ACTIONS, gdzie ACTION_TYPE ma wartość M (Magnetic Tape), E (EFT) lub C (Check Writer). Rejestrowanie Rejestrowane po zakończeniu działania EFT/Check Typ zdarzenia explicit | |||
| Zakończenie naliczania wynagrodzeń | Pomyślne zakończenie procesu Calculate Payroll, obejmującego obliczenie wynagrodzenia brutto i netto. Zdarzenie oznacza, że dla danego przypisania obliczono składniki wynagrodzenia, potrącenia i podatki. | ||
| Dlaczego to ważne Ważny etap potwierdzający, że dane są gotowe do weryfikacji. Długi czas realizacji może wskazywać na problemy z wydajnością systemu lub złożone formuły Fast Formula. Skąd pobrać Należy połączyć PAY_PAYROLL_REL_ACTIONS z PAY_PAYROLL_ACTIONS i znaleźć rekordy, w których ACTION_TYPE ma wartość R lub Q, a ACTION_STATUS zmienia się na C (Complete). Rejestrowanie Rejestrowane po zmianie statusu działania Payroll Run na Complete Typ zdarzenia explicit | |||
| Import danych o premiach i prowizjach | Utworzenie wpisów składników płacowych dla zmiennych składników wynagrodzenia, takich jak premie lub prowizje, za pomocą batch loadera lub importu HDL. Zdarzenie oznacza przekazanie zewnętrznych danych o wynagrodzeniach do naliczania płac. | ||
| Dlaczego to ważne Pozwala monitorować szybkość importu zmiennych składników wynagrodzenia. Opóźniony import często wymusza dodatkowe naliczanie płac lub ręczne korekty. Skąd pobrać Należy sprawdzić zakończenie importu w PAY_BATCH_HEADERS lub śledzić utworzenie wpisów w PAY_ELEMENT_ENTRIES_F z określonym odwołaniem do systemu źródłowego. Rejestrowanie Rejestrowane po pomyślnym zakończeniu procesu wsadowego tworzenia wpisów składników płacowych Typ zdarzenia explicit | |||
| Korekta rekordu płacowego | Ręczne zmiany wpisów składników płacowych lub danych przypisania po pierwszym naliczeniu, ale przed jego ostatecznym zatwierdzeniem. Ta czynność oznacza ponowną pracę potrzebną do poprawienia błędów lub wyjątków. | ||
| Dlaczego to ważne Wskazuje na nieefektywność procesu i problemy z jakością danych. Ograniczenie liczby takich korekt pomaga poprawić odsetek prawidłowo naliczonych wynagrodzeń za pierwszym razem. Skąd pobrać Można ją wykryć, wyszukując zmiany w PAY_ELEMENT_ENTRIES_F, których Last Update Date przypada między datą pierwszego Payroll Run a datą Prepayments. Rejestrowanie Porównać znaczniki czasu aktualizacji wpisów składników płacowych ze znacznikami czasu naliczania wynagrodzeń Typ zdarzenia inferred | |||
| Przekazanie kosztów do księgi głównej | Przekazanie wyników rozliczenia kosztów płacowych do księgi głównej. Oznacza zamknięcie księgowe cyklu płacowego. | ||
| Dlaczego to ważne Zapewnia zgodność finansową i prawidłowe księgowanie kosztów pracy. Opóźnienia uniemożliwiają działowi finansowemu zamknięcie ksiąg. Skąd pobrać Należy odpytać PAY_PAYROLL_ACTIONS, gdzie ACTION_TYPE ma wartość T (Transfer to GL), a status to Complete. Rejestrowanie Rejestrowane po zakończeniu procesu Transfer to GL Typ zdarzenia explicit | |||
| Przesłanie karty czasu pracy | Zdarzenie rozpoczynające proces, w którym pracownik lub kierownik przesyła dane o czasie pracy do rozliczenia. W Oracle HCM jest rejestrowane, gdy status karty czasu pracy w module Time and Labor zmienia się na Submitted. | ||
| Dlaczego to ważne Oznacza wprowadzenie danych źródłowych do procesu płacowego. Opóźnienia na tym etapie skracają czas, jaki pozostaje specjalistom ds. płac na weryfikację obliczeń. Skąd pobrać Należy odpytać tabelę HWM_TM_REC_GRP_DTLS lub widok HXT_TIMECARDS i znaleźć zmianę statusu na SUBMITTED. Użyć znacznika czasu przesłania. Rejestrowanie Rejestrowane przy zmianie statusu na SUBMITTED w module Time and Labor Typ zdarzenia explicit | |||
| Udostępnienie paska wynagrodzenia | Moment, w którym pasek wynagrodzenia staje się dostępny dla pracownika w Self Service. Następuje po Archiver, a czasem także po uruchomieniu procesu „Generate Payslip”. | ||
| Dlaczego to ważne Wpływa na zadowolenie pracowników. Długi czas między wypłatą a udostępnieniem paska wynagrodzenia prowadzi do zgłoszeń do działu wsparcia. Skąd pobrać Należy odpytać tabelę Documents of Record (HR_DOCUMENTS_OF_RECORD) lub sprawdzić zakończenie procesu Generate Payslip w PAY_PAYROLL_ACTIONS. Rejestrowanie Rejestrowane po zakończeniu procesu generowania pliku PDF z paskiem wynagrodzenia Typ zdarzenia explicit | |||
| Utworzenie archiwum wyników | Zakończenie procesu Archive Periodic Payroll Results. Ta migawka blokuje dane na potrzeby raportowania i generowania pasków wynagrodzeń. | ||
| Dlaczego to ważne Techniczny warunek wygenerowania pasków wynagrodzeń i raportów wymaganych przepisami. Potwierdza ostateczne zatwierdzenie danych. Skąd pobrać Należy odpytać PAY_PAYROLL_ACTIONS, gdzie ACTION_TYPE ma wartość X (Archive), a status to Complete. Rejestrowanie Rejestrowane po zakończeniu działania Archive Typ zdarzenia explicit | |||
| Wykonanie QuickPay | Wykonanie naliczenia płac dla jednej osoby (QuickPay), zwykle w celu sprawdzenia korekt. Zdarzenie to może służyć jako odpowiednik czynności Payroll Result Previewed. | ||
| Dlaczego to ważne Częste uruchamianie QuickPay dla tej samej osoby wskazuje na metodę prób i błędów w naliczaniu płac, a nie na Skąd pobrać Należy odpytać PAY_PAYROLL_ACTIONS, gdzie ACTION_TYPE ma wartość Q (QuickPay). Zliczyć wystąpienia dla każdego pracownika w danym okresie płacowym. Rejestrowanie Rejestrowane po zapisaniu działania QuickPay w PAY_PAYROLL_ACTIONS Typ zdarzenia explicit | |||
| Wykrycie wyjątku audytowego | Zarejestrowanie komunikatu o błędzie lub ostrzeżeniu podczas naliczania albo weryfikacji wynagrodzeń. Zdarzenie wskazuje konkretne niepowodzenia walidacji wymagające interwencji człowieka. | ||
| Dlaczego to ważne Niezbędne do wykrywania problemów z jakością danych. Duża liczba wyjątków zwiększa nakład pracy ręcznej i ryzyko niedotrzymania SLA. Skąd pobrać Należy odpytać tabelę PAY_MESSAGE_LINES powiązaną z konkretnym PAY_PAYROLL_REL_ACTION_ID. Tabela przechowuje błędy i ostrzeżenia wygenerowane podczas naliczania. Rejestrowanie Rejestrowane po dodaniu rekordu do PAY_MESSAGE_LINES Typ zdarzenia explicit | |||
| Zakończenie rozliczenia podatkowego | Wygenerowanie wymaganych przepisami plików podatkowych, na przykład Third Party Quarterly Tax File. Zapewnia zgodność z przepisami dla danego okresu płacowego. | ||
| Dlaczego to ważne Ważne dla KPI dotyczącego czasu obsługi rozliczeń podatkowych. Błędy na tym etapie mogą prowadzić do kar. Skąd pobrać Należy odpytać PAY_PAYROLL_ACTIONS o działania dotyczące raportowania podatkowego dla określonej grupy danych legislacyjnych, na przykład US Third Party Tax Filing. Rejestrowanie Rejestrowane po zakończeniu określonego workflow raportowania podatkowego Typ zdarzenia explicit | |||
| Zatwierdzenie karty czasu pracy | Potwierdzenie, że kierownik sprawdził i zatwierdził przesłane dane o czasie pracy. Zmiana statusu uruchamia przekazanie danych do wpisów składników płacowych. | ||
| Dlaczego to ważne To zdarzenie jest niezbędne do pomiaru czasu oczekiwania na zatwierdzenie przez kierownika. Opóźnienia na tym etapie są jedną z głównych przyczyn korekt wynagrodzeń za poprzednie okresy. Skąd pobrać Należy odpytać tabelę HWM_TM_REC_GRP_DTLS lub widok HXT_TIMECARDS i znaleźć zmianę statusu na APPROVED. Porównać znacznik czasu zatwierdzenia ze znacznikiem przesłania. Rejestrowanie Rejestrowane przy zmianie statusu na APPROVED w module Time and Labor Typ zdarzenia explicit | |||
| Zatwierdzenie naliczenia wynagrodzeń | Formalne zatwierdzenie rejestru płacowego lub workflow w Payroll Dashboard. Zwykle następuje po sprawdzeniu raportów walidacyjnych, a przed wygenerowaniem plików bankowych. | ||
| Dlaczego to ważne Oznacza formalną akceptację kierownictwa. Czas od naliczenia do zatwierdzenia wyznacza okres weryfikacji. Skąd pobrać Należy odpytać PAY_REQ_FLOW_INSTANCES pod kątem zmian statusu lub zakończenia określonego zadania w ramach zdefiniowanego Payroll Flow Pattern. Rejestrowanie Rejestrowane przy zmianie statusu instancji workflow na Completed/Approved Typ zdarzenia explicit | |||
Instrukcje ekstrakcji danych
Kroki
Otwórz Data Exchange: Zaloguj się do Oracle HCM Cloud jako użytkownik z rolą 'Human Capital Management Integration Specialist'. Przejdź do My Client Groups > Data Exchange > Extract Definitions.
Utwórz ekstrakt: Kliknij ikonę '+' i utwórz nowy ekstrakt o nazwie 'ProcessMind_Payroll_Extract'. Jako odbiorcę wybierz 'Payroll', a jako kategorię 'HR Archive', aby uzyskać dostęp do historycznych danych o działaniach płacowych.
Zdefiniuj grupy danych: Utwórz główną grupę danych na podstawie User Entity
PAY_PAYROLL_REL_UE(Payroll Relationship). Będzie ona punktem odniesienia dla ekstrakcji danych o relacji pracownika z listą płac. Dodaj podrzędne grupy danych dlaPAY_ACTION_INFORMATION_UE,PAY_ELEMENT_ENTRY_UEiHWM_MEASURE_DAY_V_UE(czas pracy i robocizna).Skonfiguruj rekordy ekstraktu: W grupach danych zdefiniuj rekordy, które spłaszczą hierarchiczną strukturę danych. Utwórz osobne rekordy dla każdego typu działania, na przykład jeden filtrujący zdarzenia 'Time Card', a drugi 'Run Results'.
Zastosuj logikę SQL przez FastFormula lub BIP: Ze względu na złożoność przekształcania hierarchicznych danych płacowych w liniowy dziennik zdarzeń najlepiej użyć opcji 'Extract Delivery Option' do wywołania raportu BI Publisher. Pozwala to wykorzystać SQL z sekcji 'Query' poniżej jako Data Model. To rozwiązanie lepiej nadaje się do utworzenia jednolitego dziennika zdarzeń niż filtrowanie w natywnym interfejsie graficznym.
Utwórz Data Model w BI Publisher: Przejdź do Tools > Reports and Analytics > Browse Catalog. Utwórz nowy Data Model i wklej poniższe zapytanie SQL. Zdefiniuj parametry
bind_start_dateibind_end_date.Połącz ekstrakt z BIP: Na karcie 'Delivery' w definicji ekstraktu dodaj opcję dostarczania. Wybierz 'PDF' lub 'XML' jako format wyjściowy. ProcessMind preferuje CSV, ale wynik BIP można później przekonwertować. Wskaż raport BI Publisher utworzony w poprzednim kroku.
Zdefiniuj parametry: W drzewie wykonania ekstraktu dodaj parametry daty początkowej i końcowej, które będą dynamicznie przekazywane do zapytania BI Publisher.
Sprawdź i uruchom ekstrakt: Zweryfikuj definicję ekstraktu pod kątem błędów. Kliknij 'Submit Extract' i podaj parametry, na przykład ostatnie 90 dni.
Monitoruj proces: Przejdź do 'View Extract Results' i poczekaj, aż status zmieni się na 'Succeeded'.
Pobierz wynik: Pobierz wygenerowany plik XML/CSV i sprawdź, czy zawiera wymagane kolumny, takie jak PayrollRecord, ActivityName i EventTimestamp.
Przygotuj plik dla ProcessMind: Jeśli wynik jest w formacie XML, przekonwertuj go na płaski plik CSV. Upewnij się, że nagłówki odpowiadają wymaganiom z sekcji 'Attributes to include'. Zaimportuj plik do ProcessMind.
Konfiguracja
- Tryb ekstrakcji: tylko zmiany lub pełny ekstrakt. Przy pierwszym ładowaniu wybierz pełny ekstrakt. Przy codziennych aktualizacjach skonfiguruj opcję 'Changes Only' na podstawie daty ostatniej aktualizacji.
- Legislative Data Group (LDG): Jeśli instancja obsługuje wiele krajów, zaleca się filtrowanie według LDG, ponieważ definicje list płac różnią się w zależności od przepisów.
- Zakres dat: Ustaw
bind_start_dateibind_end_datetak, aby obejmowały co najmniej 3-6 miesięcy. Dzięki temu process mining uwzględni pełne cykle. - Rozmiar porcji: W przypadku dużych list płac (ponad 10 tys. pracowników) ustaw rozmiar porcji w definicji ekstraktu na 2000, aby uniknąć przekroczenia limitu czasu.
- Daty obowiązywania: Tabele płacowe są zależne od daty. Logika zapytania uwzględnia
effective_start_dateieffective_end_date, aby pobrać właściwą historyczną wersję rekordu. - Bezpieczeństwo: Konto wykonujące ekstrakt musi mieć profile zabezpieczeń danych umożliwiające wgląd we wszystkie listy płac i działy objęte analizą.
Przykładowe zapytanie 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 Kroki
- Zaloguj się do Oracle BI Publisher: Otwórz środowisko Oracle Cloud i przejdź do Tools > Reports and Analytics. Kliknij Browse Catalog, aby otworzyć interfejs BI Publisher.
- Utwórz Data Model: Kliknij New w lewym górnym rogu i wybierz Data Model. Będzie to kontener na logikę ekstrakcji SQL.
- Utwórz zestaw danych SQL: Na karcie Diagram kliknij ikonę New Data Set i wybierz SQL Query.
- Skonfiguruj źródło danych: Nadaj zestawowi danych nazwę, na przykład
ProcessMind_Payroll_Extract. Jako Data Source ustawApplicationDB_HCMlub połączenie z bazą danych aplikacji HCM. Pozostaw typ Standard SQL. - Wprowadź zapytanie: Skopiuj cały skrypt SQL z sekcji Query poniżej i wklej go w polu SQL Query. Nie dodawaj formatowania markdown.
- Zdefiniuj parametry: Zapytanie korzysta ze zmiennych wiązanych
:p_start_datei:p_end_date. Na karcie Parameters w Data Model utwórz te dwa parametry typu Date, aby filtrować zakres ekstrakcji, na przykład wedługppa.EFFECTIVE_DATE. - Sprawdź strukturę danych: Kliknij OK. Przejdź do karty Data w edytorze Data Model. Wprowadź przykładowe daty, na przykład
2023-01-01i2023-03-31, a następnie kliknij View. Sprawdź, czy wynik zawiera wiersze z kolumnamiPayrollRecord,ActivityNameiEventTimestamp. - Zapisz Data Model: Zapisz model w folderze współdzielonym, na przykład
/Shared Folders/Custom/ProcessMining. - Utwórz raport do eksportu: Kliknij Create Report i wybierz zapisany Data Model. W Report Wizard utwórz prostą tabelę zawierającą wszystkie kolumny. Odznacz 'Show Grand Totals'.
- Eksportuj do CSV: Otwórz raport w Report Viewer. Kliknij menu Actions (ikona koła zębatego) > Export > Data > CSV.
- Przekształć plik: Otwórz CSV. Jeśli format nie został ustawiony automatycznie, użyj formatu daty ISO 8601 (
YYYY-MM-DD HH:MM:SS). Jeśli zapytanie SQL zostało wklejone poprawnie, dalsze przekształcenia nie powinny być potrzebne. - Prześlij plik: Zaimportuj wynikowy plik CSV do ProcessMind i przypisz kolumny zgodnie z wymaganiami dotyczącymi danych.
Konfiguracja
- Połączenie ze źródłem danych: Użyj
ApplicationDB_HCMlub równoważnego źródła danych JNDI z dostępem do odczytu schematówPAY_iPER_. - Zakres dat: Zalecane okno ekstrakcji to 3-6 miesięcy, aby objąć pełne cykle płacowe. Parametry
:p_start_datei:p_end_datepozwalają dynamicznie sterować ładowaniem danych. - Legislative Data Group (LDG): Domyślnie zapytanie pobiera dane ze wszystkich LDG. Jeśli obsługiwanych jest kilka krajów, warto dodać filtr
AND ppa.LEGISLATIVE_DATA_GROUP_ID = [Your_LDG_ID], aby rozdzielić dane. - Wydajność: Zapytanie odczytuje tabele o dużym wolumenie danych (
PAY_RUN_RESULTS,PAY_ASSIGNMENT_ACTIONS). Zakres dat nie powinien być zbyt szeroki, na przykład dłuższy niż rok, aby uniknąć przekroczenia limitu czasu w BI Publisher. - Bezpieczeństwo: Użytkownik uruchamiający raport musi mieć uprawnienia Data Access Set do odpowiednich definicji list płac.
Przykładowe zapytanie 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 Gotowi do rozpoczęcia?
Wykorzystaj ten szablon danych, aby uzyskać pełny obraz cykli płacowych i usprawnić operacje. Zacznij już dziś pracować nad wydajniejszym procesem i dokładniejszym raportowaniem.
Usprawnij naliczanie wynagrodzeń w Oracle HCM
Skróć cykl płacowy o 30% i wyeliminuj wąskie gardła.
Nie trzeba podawać danych karty płatniczej. Konfiguracja zajmuje kilka minut.