Szablon danych dotyczących należności
Szablon danych dotyczących należności
- Zalecany zestaw atrybutów do analizy należności
- Najważniejsze działania i etapy procesu do monitorowania
- Wskazówki dotyczące ekstrakcji danych z Oracle Fusion Financials
Atrybuty należności
| Nazwa | Opis | ||
|---|---|---|---|
| Nazwa działania ActivityName | Zdarzenie lub czynność wykonana w procesie obsługi należności. | ||
| Opis Ten atrybut opisuje wykonany krok procesu, na przykład utworzenie faktury, zaksięgowanie płatności lub otwarcie reklamacji. Określa przebieg procesu i pozwala przedstawić kolejność zdarzeń na mapie procesu. Analitycy wykorzystują to pole do wykrywania wariantów procesu, pętli i wąskich gardeł. Jest niezbędne do sprawdzania zgodności ze standardowymi procedurami oraz obliczania częstotliwości zdarzeń, takich jak poprawki i ręczne interwencje. Dlaczego to ważne Niezbędne do określenia przebiegu procesu i przedstawienia kolejności zdarzeń. Skąd pobrać Dane pochodzą z tabel historii transakcji, na przykład AR_PAYMENT_SCHEDULES_ALL i RA_CUST_TRX_LINE_GL_DIST_ALL. Przykłady Utworzenie fakturyWysłanie przypomnienia o płatnościZaksięgowanie częściowej płatnościOtwarcie sprawy reklamacyjnej | |||
| Numer faktury InvoiceNumber | Unikalny identyfikator transakcji faktury w Oracle Fusion. | ||
| Opis Ten atrybut pełni funkcję unikalnego klucza identyfikującego zobowiązania finansowe w module Accounts Receivable. Łączy wszystkie późniejsze działania, takie jak korekty, reklamacje i płatności, z pierwotną transakcją sprzedaży. W analizie process mining atrybut ten pełni funkcję identyfikatora sprawy (Case ID). Pozwala prześledzić cały cykl życia należności, od jej utworzenia do pełnego rozliczenia lub odpisania. Ułatwia też obliczanie czasu cyklu i analizę wariantów procesu. Dlaczego to ważne To podstawowa jednostka analizy cyklu od udzielenia kredytu kupieckiego do otrzymania płatności. Skąd pobrać Oracle Fusion Financials: RA_CUSTOMER_TRX_ALL.TRX_NUMBER Przykłady INV-2023-00110056789AR-99887755002211 | |||
| Znacznik czasu zdarzenia EventStartDateTime | Data i godzina wykonania działania. | ||
| Opis Ten atrybut zapisuje dokładny moment wykonania działania w systemie. Służy do uporządkowania zdarzeń chronologicznie i stanowi podstawę wszystkich obliczeń czasu w process mining. Analiza znaczników czasu pozwala obliczyć czas między działaniami, na przykład od utworzenia faktury do jej wysłania. Jest niezbędna do pomiaru KPI, takich jak okres spływu należności (DSO), oraz wykrywania zależności czasowych w zachowaniach płatniczych. Dlaczego to ważne Podstawa obliczania czasu trwania, czasu realizacji i czasu cyklu. Skąd pobrać Oracle Fusion Financials: kolumny CREATION_DATE lub LAST_UPDATE_DATE w różnych tabelach transakcji. Przykłady 2023-10-15T08:30:00Z2023-10-16T14:45:12Z2023-11-01T09:00:00Z | |||
| Data ostatniej aktualizacji danych LastDataUpdate | Znacznik czasu ostatniego odświeżenia danych w narzędziu process mining. | ||
| Opis Ten atrybut wskazuje, kiedy dane zostały ostatnio zsynchronizowane z systemem źródłowym Oracle. Pomaga ocenić aktualność analizy i sprawdzić, czy wyniki odzwierciedlają bieżący stan operacji. Warto monitorować to pole, aby dashboardy prezentowały aktualne informacje, zwłaszcza podczas bieżącego monitorowania otwartych reklamacji lub nierozliczonych wpłat. Dlaczego to ważne Informuje o aktualności i wiarygodności danych. Skąd pobrać Czas systemowy w chwili pobrania danych. Przykłady 2023-11-15T23:59:59Z2023-11-16T00:00:00Z | |||
| System źródłowy SourceSystem | System, w którym pierwotnie zapisano dane. | ||
| Opis Ten atrybut wskazuje środowisko oprogramowania, z którego pobrano dane o procesie. W tym przypadku potwierdza, że pochodzą one ze środowiska Oracle Fusion Financials. Przy pobieraniu danych z jednego systemu jego wartość często się nie zmienia. Atrybut staje się jednak istotny przy łączeniu danych z wielu instancji ERP lub integracji z zewnętrznymi narzędziami windykacyjnymi. Pozwala zachować pochodzenie i identyfikowalność danych w krajobrazie procesów obejmującym wiele systemów. Dlaczego to ważne Pozwala śledzić pochodzenie danych i odróżniać poszczególne instancje ERP. Skąd pobrać Wartość wpisana na stałe podczas pobierania danych lub skonfigurowana w potoku danych. Przykłady Oracle Fusion FinancialsOracle Cloud ERP - USAOracle Cloud ERP - EMEA | |||
| Czy zautomatyzowano IsAutomated | Informacja, czy czynność wykonano bez udziału człowieka. | ||
| Opis Ten atrybut logiczny określa, czy czynność wykonał proces systemowy, na przykład AutoInvoice lub AutoLockbox, czy użytkownik. Jest podstawą wskaźnika KPI „Poziom automatyzacji rozliczania płatności”. Śledzenie udziału czynności zautomatyzowanych i ręcznych w czasie pozwala ocenić efekty inicjatyw transformacji cyfrowej oraz wskazać etapy procesu, które nadal wymagają pracy ręcznej. Dlaczego to ważne Podstawowa miara postępów transformacji cyfrowej i efektywności. Skąd pobrać Logika obliczeniowa oparta na UserName, np. jeśli User == 'BATCH_USER', to true. Przykłady truefalse | |||
| Data płatności DueDate | Data, do której należy otrzymać płatność. | ||
| Opis Ten atrybut określa termin płatności obliczony na podstawie daty faktury i warunków płatności. Jest punktem odniesienia przy ustalaniu, czy płatność jest opóźniona. Wskaźnik KPI „Odchylenie terminu wysłania przypomnienia o płatności” wykorzystuje tę datę do pomiaru, jak wcześnie zespół podejmuje działania przed upływem terminu. Data ta służy również do klasyfikowania należności jako bieżących lub przeterminowanych w raportach wiekowania. Dlaczego to ważne Podstawowy punkt odniesienia przy ocenie opóźnień i terminowości płatności. Skąd pobrać Oracle Fusion Financials: AR_PAYMENT_SCHEDULES_ALL.DUE_DATE Przykłady 2023-11-302023-12-152024-01-01 | |||
| Imię i nazwisko pracownika windykacji CollectorName | Imię i nazwisko pracownika lub nazwa zespołu przypisanego do obsługi faktury. | ||
| Opis Ten atrybut wskazuje pracownika lub członka zespołu odpowiedzialnego za odzyskanie należności z faktury. Jest głównym wymiarem dashboardu „Wyniki pracy pracowników windykacji”. Dane z tego pola pozwalają mierzyć produktywność poszczególnych pracowników, określać potrzeby szkoleniowe i równoważyć obciążenie pracą. Ułatwiają rozliczanie odpowiedzialności i ujednolicanie działań windykacyjnych w zespole finansowym. Dlaczego to ważne Przydatne do analizy wyników pracy i równoważenia obciążenia zespołu. Skąd pobrać Oracle Fusion Financials: AR_COLLECTORS.NAME powiązane z profilem klienta. Przykłady John SmithZespół windykacji AJane Doe | |||
| Jednostka biznesowa BusinessUnit | Jednostka organizacji odpowiedzialna za fakturę. | ||
| Opis Ten atrybut odpowiada identyfikatorowi organizacji w Oracle Fusion i wskazuje jednostkę biznesową lub dział, do którego należy należność. Umożliwia porównywanie wyników procesu w różnych częściach organizacji. Porównanie KPI, takich jak czas rozpatrywania reklamacji czy DSO, między jednostkami biznesowymi pomaga kierownictwu wskazać zespoły osiągające dobre wyniki i ujednolicić sprawdzone praktyki. Pokazuje też, które jednostki mogą potrzebować dodatkowych zasobów lub zmian w procesie. Dlaczego to ważne Ważny wymiar porównywania wyników i oceny jednostek organizacji. Skąd pobrać Oracle Fusion Financials: HR_ORGANIZATION_UNITS.NAME powiązane przez ORG_ID. Przykłady Sprzedaż, wschodnie USAUsługi, EMEAProdukcja, APAC | |||
| Kwota faktury InvoiceAmount | Łączna wartość faktury. | ||
| Opis Ten atrybut określa pierwotną kwotę należną z faktury. W wielu analizach służy jako główny czynnik wagowy, dzięki czemu można nadać większy priorytet transakcjom o wysokiej wartości niż dużej liczbie transakcji o niskiej wartości. W widoku „Nierozliczone kredyty i utrata przychodów” pole to pomaga określić finansowy wpływ nierozwiązanych spraw. Służy również do obliczania ważonej średniej DSO, która pokazuje efektywność procesu z perspektywy wartości finansowej. Dlaczego to ważne Uwzględnia wartość finansową w analizie i ułatwia ustalanie priorytetów według kwoty. Skąd pobrać Oracle Fusion Financials: RA_CUSTOMER_TRX_ALL.AMOUNT_DUE_ORIGINAL Przykłady 1500.00250.5010000.00 | |||
| Nazwa klienta CustomerName | Nazwa podmiotu, na który wystawiono fakturę. | ||
| Opis Ten atrybut wskazuje klienta powiązanego z fakturą. Jest podstawą analizy zachowań płatniczych, częstotliwości reklamacji i skuteczności windykacji na poziomie klienta. Analitycy wykorzystują to pole do wskazywania klientów, którzy często płacą po terminie lub składają reklamacje. Informacje te wspierają dashboard „Analiza zachowań płatniczych klientów” i pomagają dostosować warunki kredytowe oraz strategie windykacyjne do profilu poszczególnych klientów. Dlaczego to ważne Niezbędne do analizy z perspektywy klienta i oceny ryzyka. Skąd pobrać Oracle Fusion Financials: HZ_PARTIES.PARTY_NAME powiązane przez BILL_TO_CUSTOMER_ID. Przykłady Acme CorpGlobex CorporationSoylent Corp | |||
| Nazwa użytkownika UserName | Użytkownik systemu, który wykonał daną czynność. | ||
| Opis Ten atrybut zapisuje identyfikator logowania lub nazwę osoby, która wykonała daną czynność, na przykład zaksięgowała fakturę lub uzgodniła wyciąg bankowy. Odpowiada ogólnemu polu „Użytkownik”. Dane te są niezbędne podczas audytów zgodności oraz w dashboardzie „Wydajność pracowników windykacji”. Pozwalają oddzielić działania wykonywane automatycznie, często przez użytkownika „System”, od czynności wykonywanych przez ludzi, co ułatwia analizę automatyzacji. Dlaczego to ważne Umożliwia śledzenie wyników na poziomie użytkownika i analizę rozdziału obowiązków. Skąd pobrać Oracle Fusion Financials: kolumny CREATED_BY lub LAST_UPDATED_BY połączone z tabelami użytkowników. Przykłady sysadminjsmithfinance_batch_job | |||
| Segment klienta CustomerSegment | Klasyfikacja klienta według wielkości, branży lub poziomu ryzyka. | ||
| Opis Ten atrybut dzieli klientów na grupy, takie jak strategiczni, duże przedsiębiorstwa, małe i średnie firmy oraz klienci wysokiego ryzyka. Często wynika z klasy klienta lub klasy profilu w Oracle Fusion. Atrybut ten pozwala analizować warianty procesu w różnych segmentach rynku. Można na przykład sprawdzić, czy klienci strategiczni otrzymują zaplanowaną obsługę o podwyższonym standardzie oraz czy klienci wysokiego ryzyka są odpowiednio monitorowani pod kątem terminowych płatności. Dlaczego to ważne Umożliwia analizę strategii windykacyjnych i ryzyka w poszczególnych segmentach. Skąd pobrać Oracle Fusion Financials: HZ_CUSTOMER_PROFILES.PROFILE_CLASS_ID. Przykłady Duże przedsiębiorstwoMała firmaAdministracja publicznaWysokie ryzyko | |||
| Typ transakcji TransactionType | Klasyfikacja dokumentu należności, na przykład faktura, nota kredytowa lub nota debetowa. | ||
| Opis Ten atrybut rozróżnia typy dokumentów finansowych. Typowe wartości to faktura, nota kredytowa i nota debetowa. To rozróżnienie jest istotne dla dashboardu „Liczba not kredytowych i poprawki”. Filtrowanie według tego atrybutu pozwala analitykom wyodrębnić pętle poprawek związane z notami kredytowymi lub skupić się na głównym procesie fakturowania. Ułatwia też zrozumienie struktury pracy związanej z obsługą należności. Dlaczego to ważne Pozwala odróżnić standardowe faktury od korekt i poprawek. Skąd pobrać Oracle Fusion Financials: RA_CUST_TRX_TYPES_ALL.NAME Przykłady FakturaNota kredytowaNota debetowaObciążenie zwrotne | |||
| Czy wystąpiła poprawka IsRework | Informacja, czy faktura wymagała korekty lub przechodziła przez kolejne etapy obsługi sporu. | ||
| Opis Ten atrybut logiczny wskazuje, czy w przypadku faktury wystąpiły czynności związane z poprawianiem błędów, takie jak „Wystawiono notę uznaniową” lub „Skorygowano fakturę”. Wspiera dashboard „Wolumen not uznaniowych i ponowne wykonywanie pracy”. Wskazanie przypadków wymagających poprawek pozwala oddzielić standardowy przebieg procesu od problematycznych spraw. Wysoki odsetek poprawek często sygnalizuje problemy z jakością danych podstawowych lub wprowadzaniem zamówień sprzedaży na wcześniejszych etapach. Dlaczego to ważne Pomaga wykryć straty i nieefektywne działania w przebiegu procesu. Skąd pobrać Obliczane: true, jeśli sprawa zawiera zdarzenie „Wystawiono notę uznaniową” lub „Otwarto sprawę sporną”. Przykłady truefalse | |||
| Kod waluty CurrencyCode | Waluta, w której wyrażono kwotę faktury. | ||
| Opis Ten atrybut określa walutę, na przykład USD lub EUR, w której podano kwoty finansowe. Jest niezbędny do prawidłowej interpretacji kwoty faktury i przeliczania walut, jeśli raporty mają być prezentowane w jednej walucie. W organizacjach działających globalnie atrybut ten pomaga analizować skuteczność windykacji w różnych regionach gospodarczych i oddzielać wpływ kursów walut od wyników operacyjnych procesu. Dlaczego to ważne Pozwala prawidłowo interpretować wartości finansowe w środowisku wielowalutowym. Skąd pobrać Oracle Fusion Financials: RA_CUSTOMER_TRX_ALL.INVOICE_CURRENCY_CODE Przykłady USDEURGBPJPY | |||
| Ostatni dzień uprawniający do rabatu DiscountEligibilityDate | Ostatni dzień, w którym klient może zapłacić, aby skorzystać z rabatu za wcześniejszą płatność. | ||
| Opis Ten atrybut wskazuje termin skorzystania przez klienta z warunków takich jak „2/10, 30 dni netto”, czyli 2% rabatu przy płatności w ciągu 10 dni. Jest potrzebny w dashboardzie „Analiza rabatów za wcześniejszą płatność”. Porównanie płatności z tą datą pozwala obliczyć „Wskaźnik wykorzystania rabatów za wcześniejszą płatność”. Dzięki temu można ocenić, czy rabaty skutecznie przyspieszają przepływ środków, czy klienci z nich nie korzystają. Dlaczego to ważne Umożliwia ocenę skuteczności zachęt i ich wpływu na przyspieszenie przepływu środków. Skąd pobrać Oracle Fusion Financials: AR_PAYMENT_SCHEDULES_ALL.DISCOUNT_DATE Przykłady 2023-11-102023-12-05 | |||
| Powód sporu DisputeReason | Kategoria lub kod przyczyny przypisany przy otwarciu sporu. | ||
| Opis Ten atrybut zapisuje uzasadnienie podane przy zdarzeniu „Otwarto sprawę sporną”. Typowe wartości to „Błąd cenowy”, „Niezgodność ilości” lub „Uszkodzony towar”. Analiza tego atrybutu w dashboardzie „Cykl życia sporów i wąskie gardła” pomaga ustalić przyczyny opóźnień w płatnościach. Jeśli często pojawia się „Błąd cenowy”, warto sprawdzić wcześniejszy etap procesu, czyli przygotowywanie ofert sprzedażowych, zamiast skupiać się wyłącznie na windykacji. Dlaczego to ważne Pomaga ustalić przyczyny opóźnień w płatnościach i ponownego wykonywania pracy. Skąd pobrać Oracle Fusion Financials: RA_CM_REQUESTS.REASON_CODE lub AR_DISPUTE_HISTORY. Przykłady Spór dotyczący cenyBłąd podatkowyNie otrzymano towaruPodwójne fakturowanie | |||
| Region Region | Region geograficzny przypisany do jednostki biznesowej lub klienta. | ||
| Opis Ten atrybut przypisuje transakcję do większego obszaru geograficznego, takiego jak Ameryka Północna, EMEA lub APAC. Przydaje się w raportach dla kadry kierowniczej oraz w dashboardzie „Trendy DSO i cyklu gotówkowego”. Analiza regionalna uwzględnia różnice w zwyczajach płatniczych, na przykład dłuższe standardowe terminy płatności w Europie Południowej niż w USA. Dzięki temu globalne wskaźniki KPI można interpretować z uwzględnieniem lokalnego kontekstu. Dlaczego to ważne Umożliwia ogólną segmentację geograficzną na potrzeby raportowania globalnego. Skąd pobrać Oracle Fusion Financials: wartość wyznaczana na podstawie jednostki biznesowej lub adresu klienta. Przykłady Ameryka PółnocnaEMEAAPACAmeryka Łacińska | |||
| Warunki płatności PaymentTerms | Uzgodnione warunki dotyczące terminu płatności, np. 30 dni netto. | ||
| Opis Ten atrybut określa uzgodniony w umowie termin płatności. Służy do obliczania daty płatności i jest niezbędny w dashboardzie „Skuteczność strategii windykacji”. Różnice w warunkach płatności poszczególnych klientów mogą wyjaśniać rozbieżności w DSO. Dzięki temu atrybutowi analitycy mogą porównywać wyniki na równych zasadach. Klient z terminem 60 dni netto nie zostanie niesłusznie uznany za opóźniającego płatności w porównaniu z klientem, który ma termin 30 dni netto. Dlaczego to ważne Pozwala ocenić terminowość płatności w kontekście warunków umownych. Skąd pobrać Oracle Fusion Financials: RA_TERMS.NAME Przykłady 30 dni nettoNatychmiast2/10, 30 dni netto60 dni netto | |||
| Źródło utworzenia CreationSource | Źródło faktury, wskazujące, czy została wprowadzona ręcznie, czy zaimportowana. | ||
| Opis Ten atrybut pokazuje, w jaki sposób faktura trafiła do systemu Oracle, na przykład przez „Manual Entry”, „AutoInvoice” lub określone zewnętrzne źródła danych. Jest odpowiednikiem ogólnego mapowania „Kanał”. Ma to istotne znaczenie dla dashboardu „Monitor automatyzacji rozliczania płatności”. Pozwala odróżnić procesy w pełni cyfrowe od tych, które wymagają ręcznej konfiguracji. Duża liczba faktur wprowadzonych przez „Manual Entry” może wskazywać na brak integracji z systemami źródłowymi lub problemy z systemem. Dlaczego to ważne Określa poziom automatyzacji po stronie systemów źródłowych i pochodzenie danych. Skąd pobrać Oracle Fusion Financials: RA_BATCH_SOURCES_ALL.NAME Przykłady AutoInvoiceRęcznieWdrożenie projektówZarządzanie zamówieniami | |||
Działania w procesie obsługi należności
| Działanie | Opis | ||
|---|---|---|---|
| Otrzymanie pełnej płatności | Zdarzenie występuje, gdy przypisanie wpłaty zmniejsza saldo faktury do zera. To podstawowe zdarzenie potwierdzające powodzenie windykacji. | ||
| Dlaczego to ważne Niezbędne do analizy rabatów za wcześniejszą płatność. Data tego zdarzenia pozwala ustalić, czy należność wpłynęła w okresie uprawniającym do rabatu. Skąd pobrać Dane pochodzą z AR_RECEIVABLE_APPLICATIONS_ALL, gdzie STATUS = 'APP', a wynikowa wartość AMOUNT_DUE_REMAINING wynosi 0. Rejestrowanie Ustalane przez porównanie pola X z polem Y Typ zdarzenia calculated | |||
| Utworzenie faktury | To zdarzenie oznacza utworzenie rekordu faktury w systemie. Rejestruje znacznik czasu pierwszego zapisania nagłówka transakcji w tabelach Oracle Receivables. | ||
| Dlaczego to ważne Wyznacza początek cyklu życia procesu i punkt odniesienia do obliczania wieku należności. Jest niezbędne do obliczenia całkowitego czasu cyklu oraz czasu od utworzenia faktury do jej wysłania. Skąd pobrać Dane pochodzą z tabeli RA_CUSTOMER_TRX_ALL, z kolumny CREATION_DATE lub TRX_DATE. Rejestrowanie Rejestrowane przy dodaniu wiersza transakcji Typ zdarzenia explicit | |||
| Wysłanie faktury | Oznacza przekazanie faktury klientowi w formie wydruku, wiadomości e-mail lub pliku XML. To moment przekazania dokumentu z organizacji do klienta. | ||
| Dlaczego to ważne Niezbędne do pomiaru sprawności wysyłania faktur. Czas między utworzeniem a wysłaniem faktury bezpośrednio opóźnia odzyskanie należności. Skąd pobrać Ustalane na podstawie PRINTING_ORIGINAL_DATE w tabeli RA_CUSTOMER_TRX_ALL lub odpowiednich logów w Oracle Collaboration Messaging Framework, jeśli używany jest format XML. Rejestrowanie Porównanie pola statusu przed zmianą i po niej Typ zdarzenia inferred | |||
| Zakończenie tworzenia faktury | Oznacza zakończenie tworzenia faktury i jej gotowość do dalszej obsługi, wydruku i zaksięgowania. Zdarzenie występuje, gdy status transakcji zmienia się z niekompletnego na kompletny. | ||
| Dlaczego to ważne Pozwala odróżnić czas przygotowania faktury od czasu jej obsługi. Opóźnienia na tym etapie wskazują na wąskie gardła w wewnętrznym procesie wystawiania faktur. Skąd pobrać Wykrywane, gdy COMPLETE_FLAG w tabeli RA_CUSTOMER_TRX_ALL zmienia wartość na 'Y'. Rejestrowanie Porównanie pola statusu przed zmianą i po niej Typ zdarzenia inferred | |||
| Zaksięgowanie częściowej płatności | Zdarzenie występuje, gdy wpłata zostaje przypisana do faktury, ale jej kwota jest niższa od całego salda do zapłaty. Faktura pozostaje otwarta, a saldo ulega zmniejszeniu. | ||
| Dlaczego to ważne Częste częściowe płatności wskazują na rozdrobniony sposób regulowania należności (KPI: częstotliwość częściowych płatności), co zwiększa nakład pracy przy uzgadnianiu. Skąd pobrać Dane pochodzą z AR_RECEIVABLE_APPLICATIONS_ALL, gdzie STATUS = 'APP', a AMOUNT_APPLIED < AMOUNT_DUE_REMAINING. Rejestrowanie Rejestrowane po wykonaniu transakcji X Typ zdarzenia explicit | |||
| Zamknięcie faktury | Końcowy stan, w którym faktura zostaje zamknięta w systemie, zwykle dlatego, że saldo wynosi zero po płatności, wystawieniu noty kredytowej lub korekcie. | ||
| Dlaczego to ważne Znacznik czasu tego zdarzenia służy do obliczania okresu spływu należności (DSO). Oznacza koniec danej instancji procesu. Skąd pobrać Wykrywane, gdy STATUS w AR_PAYMENT_SCHEDULES_ALL zmienia się na 'CL' (Closed). Rejestrowanie Porównanie pola statusu przed zmianą i po niej Typ zdarzenia inferred | |||
| Korekta faktury | Rejestruje ręczne korekty salda faktury, na przykład odpisy niewielkich kwot lub korekty walutowe, odrębne od not kredytowych. | ||
| Dlaczego to ważne Pomaga wykrywać utratę przychodów i niestandardowe ścieżki procesu, w których saldo zostaje rozliczone bez płatności. Skąd pobrać Dane pochodzą z tabeli AR_ADJUSTMENTS_ALL powiązanej z fakturą. Rejestrowanie Rejestrowane po wykonaniu transakcji X Typ zdarzenia explicit | |||
| Odpisanie faktury | Szczególny rodzaj korekty, w którym pozostałe saldo uznaje się za nieściągalne i odpisuje jako stratę z tytułu nieściągalnych należności. To niekorzystny stan końcowy procesu. | ||
| Dlaczego to ważne Niezbędne do monitorowania kondycji finansowej. Pozwala odróżnić sprawność operacyjną, czyli szybkość płatności, od problemów z jakością kredytową. Skąd pobrać Dane pochodzą z AR_ADJUSTMENTS_ALL, gdzie typ korekty jest oznaczony jako 'Write-off' lub powiązany z kontem nieściągalnych należności. Rejestrowanie Rejestrowane po wykonaniu transakcji X Typ zdarzenia explicit | |||
| Otrzymanie deklaracji zapłaty | Rejestruje zobowiązanie klienta do zapłaty określonej kwoty w wyznaczonym terminie. Zazwyczaj pracownik windykacji wprowadza tę informację ręcznie podczas kontaktu z klientem. | ||
| Dlaczego to ważne Przydatne do analizy zachowań płatniczych klientów. Niedotrzymane deklaracje wskazują na wysokie ryzyko kredytowe i możliwość powstania nieściągalnych należności. Skąd pobrać Dane pochodzą z tabeli IEX_PROMISE_DETAILS w module Collections. Rejestrowanie Rejestrowane po wykonaniu transakcji X Typ zdarzenia explicit | |||
| Otwarcie sprawy reklamacyjnej | Oznacza rozpoczęcie formalnego postępowania dotyczącego reklamacji faktury. Na czas wyjaśniania sprawy standardowe działania windykacyjne zostają wstrzymane. | ||
| Dlaczego to ważne Ważny wskaźnik wąskich gardeł. Duża liczba reklamacji może świadczyć o problemach z realizacją zamówień lub poprawnością faktur. Skąd pobrać Wykrywane na podstawie rekordów w RA_CM_REQUESTS_ALL lub powiązanych z fakturą workflow wniosków o notę kredytową. Rejestrowanie Rejestrowane po wykonaniu transakcji X Typ zdarzenia explicit | |||
| Rozstrzygnięcie reklamacji | Oznacza zakończenie postępowania wyjaśniającego. Reklamacja może zostać uznana, co prowadzi do zatwierdzenia noty kredytowej, albo odrzucona. | ||
| Dlaczego to ważne Niezbędne do obliczenia średniego czasu rozpatrywania reklamacji. Długi czas oczekiwania obniża zadowolenie klientów i pogarsza DSO. Skąd pobrać Ustalane na podstawie zmiany statusu na 'APPROVED' lub 'REJECTED' w tabeli RA_CM_REQUESTS_ALL. Rejestrowanie Porównanie pola statusu przed zmianą i po niej Typ zdarzenia inferred | |||
| Uzgodnienie z wyciągiem bankowym | Oznacza uzgodnienie wpłaty przypisanej do faktury z pozycją na wyciągu bankowym. Potwierdza, że środki rzeczywiście wpłynęły na rachunek. | ||
| Dlaczego to ważne Pozwala mierzyć automatyzację rozliczania wpłat. Czas między zaksięgowaniem płatności a jej uzgodnieniem z bankiem oznacza okres, w którym wpływ nie jest jeszcze potwierdzony. Skąd pobrać Dane łączone z AR_CASH_RECEIPTS_ALL do CE_STATEMENT_LINES (Cash Management) za pomocą identyfikatora uzgodnienia. Rejestrowanie Porównanie pola statusu przed zmianą i po niej Typ zdarzenia inferred | |||
| Wysłanie przypomnienia o płatności | Rejestruje wysłanie do klienta wezwania do zapłaty lub przypomnienia o należności. Zdarzenie generuje moduł Advanced Collections. | ||
| Dlaczego to ważne Niezbędne do analizy skuteczności strategii windykacyjnej. Zestawienie tego zdarzenia z płatnościami pozwala ustalić, które przypomnienia najszybciej prowadzą do odzyskania należności. Skąd pobrać Dane znajdują się w tabelach IEX_DUNNING lub IEX_STRATEGY_WORK_ITEMS powiązanych z kontem klienta. Rejestrowanie Rejestrowane po wykonaniu transakcji X Typ zdarzenia explicit | |||
| Wystawienie noty kredytowej | Rejestruje utworzenie transakcji noty kredytowej przypisanej do faktury. Zmniejsza ona należną kwotę, często w związku z reklamacją lub zwrotem. | ||
| Dlaczego to ważne Pozwala śledzić odsetek poprawek związanych z notami kredytowymi i utratę przychodów. Częste wystawianie takich not może wskazywać na systemowe błędy w fakturowaniu. Skąd pobrać Dane pochodzą z RA_CUSTOMER_TRX_ALL, gdzie TRX_TYPE ma wartość Credit Memo, a RELATED_CUSTOMER_TRX_ID odpowiada identyfikatorowi faktury. Rejestrowanie Rejestrowane po wykonaniu transakcji X Typ zdarzenia explicit | |||
| Zaksięgowanie faktury w GL | Rejestruje zakończenie księgowania faktury i przekazanie zapisów do księgi głównej. Potwierdza zgodność finansową i gotowość do zamknięcia okresu. | ||
| Dlaczego to ważne Opóźnienia na tym etapie nie wpływają na informacje widoczne dla klienta, ale wydłużają zamknięcie finansowe i opóźniają raportowanie. Skąd pobrać Dane pochodzą z GL_DATE w tabeli RA_CUST_TRX_LINE_GL_DIST_ALL. Rejestrowanie Rejestrowane po wykonaniu transakcji X Typ zdarzenia explicit | |||
Instrukcje ekstrakcji danych
Kroki
Otwórzcie konsolę Oracle BI Cloud Connector (BICC). Przejdźcie do sekcji Manage Offerings and Data Stores.
Skonfigurujcie połączenie z magazynem danych. Sprawdźcie, czy połączenie z Oracle Universal Content Management (UCM) lub zewnętrznym magazynem obiektowym, takim jak OCI Object Storage, działa prawidłowo. To miejsce będzie przechowywać wyodrębnione pliki CSV/Parquet.
Wybierzcie ofertę Financials. Odszukajcie ją, aby uzyskać dostęp do obiektów View Object dotyczących należności.
Wybierzcie i skonfigurujcie obiekty View Object (VO). Wskażcie konkretne publiczne obiekty View Object (PVO) potrzebne do zbudowania dziennika zdarzeń. Należą do nich:
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.TransactionHeaderExtractPVO (nagłówki faktur)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.TransactionLineExtractPVO (pozycje faktur)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.ReceiptApplicationExtractPVO (płatności i rozliczenia not kredytowych)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.AdjustmentExtractPVO (korekty i odpisy)
- FscmTopModelAM.FinExtractAM.IexBiccExtractAM.PromiseDetailExtractPVO (zobowiązania do zapłaty)
- FscmTopModelAM.FinExtractAM.IexBiccExtractAM.StrategyWorkItemExtractPVO (działania windykacyjne i przypomnienia)
Ustawcie kryteria filtrowania danych. W sekcji Manage Extract Schedules lub konfiguracji PVO ustawcie filtr CreationDate albo LastUpdateDate, aby pobrać dane z okresu objętego analizą, na przykład z ostatnich 12 miesięcy.
Zaplanujcie ekstrakcję. Utwórzcie harmonogram codziennego uruchamiania ekstrakcji. Wybierzcie Incremental Load, aby po pierwszym pełnym załadowaniu pobierać tylko zmienione dane.
Pobierzcie i załadujcie dane. Użyjcie skryptu automatyzującego lub narzędzia integracyjnego, aby pobrać pliki z UCM lub Object Storage i załadować je do tabel pośrednich hurtowni danych, na przykład STG_AR_TRX_HEADER i STG_AR_APPLICATIONS.
Zastosujcie logikę transformacji. Uruchomcie skrypt SQL z sekcji Query na tabelach pośrednich, aby przekształcić dane relacyjne do formatu dziennika zdarzeń ProcessMind.
Sprawdźcie typy danych. Upewnijcie się, że pola daty są konwertowane na typ datetime, a kwoty liczbowe prawidłowo obsługują miejsca dziesiętne.
Wyeksportujcie dane do CSV/Parquet. Zapiszcie końcowy zestaw wyników z hurtowni danych w jednym pliku.
Prześlijcie plik do ProcessMind. Zaimportujcie go i przypiszcie InvoiceNumber do Case ID, ActivityName do Activity, a EventStartDateTime do Timestamp.
Konfiguracja
- Częstotliwość ekstrakcji: zalecana codzienna ekstrakcja przyrostowa, aby uwzględniać najnowsze zmiany statusu.
- Pierwsze załadowanie: przy pierwszym uruchomieniu wybierzcie „Full Extract”, a następnie przejdźcie na „Incremental” na podstawie Last Update Date.
- Najważniejsze PVO: TransactionHeaderExtractPVO, ReceiptApplicationExtractPVO, AdjustmentExtractPVO, StrategyWorkItemExtractPVO.
- Filtrowanie po dacie: zastosujcie filtr CreationDate >= '202X-01-01', aby ograniczyć ilość danych.
- Wielkość pobieranej partii: domyślnie zwykle 50000 wierszy. Jeśli pobieracie dane przez UCM, dostosujcie tę wartość do przepustowości sieci.
- Klucze główne: skonfigurujcie hurtownię danych tak, aby aktualizowała lub wstawiała rekordy na podstawie kluczy głównych PVO, zwykle CustomerTrxId, ReceivableApplicationId itp. Zapobiegnie to duplikatom.
- Historia audytowa: standardowe PVO BICC zapisują bieżący stan. Aby uzyskać dokładne historyczne znaczniki czasu zmian statusu, na przykład otwarcia sporu, może być konieczne włączenie zasad audytu w Fusion i wyodrębnienie obiektów Audit View, jeśli tabele transakcyjne nie przechowują historii.
Przykładowe zapytanie sql
/*
Transformation Script for Oracle BICC Data
Assumes raw BICC PVO CSVs are loaded into a SQL Staging Area with tables named:
- STG_AR_TRX_HEADER (TransactionHeaderExtractPVO)
- STG_AR_APPLICATIONS (ReceiptApplicationExtractPVO)
- STG_AR_ADJUSTMENTS (AdjustmentExtractPVO)
- STG_IEX_PROMISES (PromiseDetailExtractPVO)
- STG_IEX_STRATEGY (StrategyWorkItemExtractPVO)
- STG_CE_STMTS (BankStatementLineExtractPVO - Optional/Advanced)
*/
WITH Base_Log AS (
/* 1. Invoice Created */
SELECT
TrxNumber AS InvoiceNumber,
'Invoice Created' AS ActivityName,
CreationDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
BusinessUnitName AS BusinessUnit,
BillToCustomerName AS CustomerName,
InvoiceCurrencyCode AS Currency,
(Quantity * UnitSellingPrice) AS InvoiceAmount,
TrxClass AS TransactionType,
CreatedBy AS UserName,
'Yes' AS IsAutomated
FROM STG_AR_TRX_HEADER
WHERE TrxClass IN ('INV', 'DM')
UNION ALL
/* 2. Invoice Completed */
SELECT
TrxNumber AS InvoiceNumber,
'Invoice Completed' AS ActivityName,
TrxDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
BusinessUnitName AS BusinessUnit,
BillToCustomerName AS CustomerName,
InvoiceCurrencyCode AS Currency,
NULL AS InvoiceAmount,
TrxClass AS TransactionType,
LastUpdatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_TRX_HEADER
WHERE CompleteFlag = 'Y'
AND TrxClass IN ('INV', 'DM')
UNION ALL
/* 3. Invoice Dispatched */
/* Using PrintingOriginalDate as proxy for dispatch */
SELECT
TrxNumber AS InvoiceNumber,
'Invoice Dispatched' AS ActivityName,
PrintingOriginalDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
BusinessUnitName AS BusinessUnit,
BillToCustomerName AS CustomerName,
InvoiceCurrencyCode AS Currency,
NULL AS InvoiceAmount,
TrxClass AS TransactionType,
LastUpdatedBy AS UserName,
'Yes' AS IsAutomated
FROM STG_AR_TRX_HEADER
WHERE PrintingOriginalDate IS NOT NULL
AND TrxClass IN ('INV', 'DM')
UNION ALL
/* 4. Invoice Posted to GL */
SELECT
TrxNumber AS InvoiceNumber,
'Invoice Posted to GL' AS ActivityName,
GlDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
BusinessUnitName AS BusinessUnit,
BillToCustomerName AS CustomerName,
InvoiceCurrencyCode AS Currency,
NULL AS InvoiceAmount,
TrxClass AS TransactionType,
'System' AS UserName,
'Yes' AS IsAutomated
FROM STG_AR_TRX_HEADER
WHERE GlDate IS NOT NULL
AND TrxClass IN ('INV', 'DM')
UNION ALL
/* 5. Payment Reminder Sent */
/* Links via Customer or Account, mapped back to Trx via Collections Strategy logic */
/* Simplified join assumption based on Trx Id availability in Work Item */
SELECT
H.TrxNumber AS InvoiceNumber,
'Payment Reminder Sent' AS ActivityName,
W.CreationDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
NULL AS InvoiceAmount,
H.TrxClass AS TransactionType,
W.CreatedBy AS UserName,
'Yes' AS IsAutomated
FROM STG_IEX_STRATEGY W
JOIN STG_AR_TRX_HEADER H ON W.ObjectPk1 = H.CustomerTrxId
WHERE W.WorkItemTemplateName LIKE '%Reminder%'
UNION ALL
/* 6. Promise to Pay Received */
SELECT
H.TrxNumber AS InvoiceNumber,
'Promise to Pay Received' AS ActivityName,
P.CreationDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
P.PromiseAmount AS InvoiceAmount,
H.TrxClass AS TransactionType,
P.CreatedBy AS UserName,
'No' AS IsAutomated
FROM STG_IEX_PROMISES P
JOIN STG_AR_TRX_HEADER H ON P.CustTrxId = H.CustomerTrxId
UNION ALL
/* 7. Dispute Case Opened */
/* Triggered when dispute amount is updated/created */
SELECT
TrxNumber AS InvoiceNumber,
'Dispute Case Opened' AS ActivityName,
DisputeDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
BusinessUnitName AS BusinessUnit,
BillToCustomerName AS CustomerName,
InvoiceCurrencyCode AS Currency,
NULL AS InvoiceAmount,
TrxClass AS TransactionType,
LastUpdatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_TRX_HEADER
WHERE DisputeDate IS NOT NULL
UNION ALL
/* 8. Dispute Resolved */
/* Approximated by update date when dispute amount returns to 0 after being positive */
/* Note: Accurate dispute history requires Audit Trail extraction. This is a best-effort proxy based on header state. */
SELECT
TrxNumber AS InvoiceNumber,
'Dispute Resolved' AS ActivityName,
LastUpdateDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
BusinessUnitName AS BusinessUnit,
BillToCustomerName AS CustomerName,
InvoiceCurrencyCode AS Currency,
NULL AS InvoiceAmount,
TrxClass AS TransactionType,
LastUpdatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_TRX_HEADER
WHERE DisputeDate IS NOT NULL AND DisputeAmount = 0
UNION ALL
/* 9. Credit Memo Issued (Applied) */
SELECT
H.TrxNumber AS InvoiceNumber,
'Credit Memo Issued' AS ActivityName,
APP.ApplyDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
APP.AmountApplied AS InvoiceAmount,
H.TrxClass AS TransactionType,
APP.CreatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_APPLICATIONS APP
JOIN STG_AR_TRX_HEADER H ON APP.AppliedCustomerTrxId = H.CustomerTrxId
WHERE APP.ApplicationType = 'CM' -- Credit Memo application
UNION ALL
/* 10. Partial Payment Posted */
SELECT
H.TrxNumber AS InvoiceNumber,
'Partial Payment Posted' AS ActivityName,
APP.ApplyDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
APP.AmountApplied AS InvoiceAmount,
H.TrxClass AS TransactionType,
APP.CreatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_APPLICATIONS APP
JOIN STG_AR_TRX_HEADER H ON APP.AppliedCustomerTrxId = H.CustomerTrxId
WHERE APP.ApplicationType = 'CASH'
AND APP.Status = 'APP'
AND (H.AmountDueRemaining > 0) -- Invoice still has balance
UNION ALL
/* 11. Full Payment Received */
SELECT
H.TrxNumber AS InvoiceNumber,
'Full Payment Received' AS ActivityName,
APP.ApplyDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
APP.AmountApplied AS InvoiceAmount,
H.TrxClass AS TransactionType,
APP.CreatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_APPLICATIONS APP
JOIN STG_AR_TRX_HEADER H ON APP.AppliedCustomerTrxId = H.CustomerTrxId
WHERE APP.ApplicationType = 'CASH'
AND APP.Status = 'APP'
AND H.AmountDueRemaining = 0 -- Invoice fully paid
UNION ALL
/* 12. Bank Statement Matched */
/* Requires joining Receipt Application -> Cash Receipt -> Bank Statement Line */
/* Placeholder logic assuming availability of Bank Statement PVO data */
SELECT
H.TrxNumber AS InvoiceNumber,
'Bank Statement Matched' AS ActivityName,
BSL.StatementDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
BSL.Amount AS InvoiceAmount,
H.TrxClass AS TransactionType,
BSL.CreatedBy AS UserName,
'Yes' AS IsAutomated
FROM STG_AR_APPLICATIONS APP
JOIN STG_AR_TRX_HEADER H ON APP.AppliedCustomerTrxId = H.CustomerTrxId
-- Join to Receipt then to Bank Stmt would happen here
JOIN STG_CE_STMTS BSL ON APP.CashReceiptId = BSL.ReferenceId -- Simplified Join
WHERE APP.ApplicationType = 'CASH'
UNION ALL
/* 13. Invoice Adjusted */
SELECT
H.TrxNumber AS InvoiceNumber,
'Invoice Adjusted' AS ActivityName,
ADJ.ApplyDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
ADJ.Amount AS InvoiceAmount,
H.TrxClass AS TransactionType,
ADJ.CreatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_ADJUSTMENTS ADJ
JOIN STG_AR_TRX_HEADER H ON ADJ.CustomerTrxId = H.CustomerTrxId
WHERE ADJ.AdjustmentType != 'WRITE_OFF'
UNION ALL
/* 14. Invoice Written Off */
SELECT
H.TrxNumber AS InvoiceNumber,
'Invoice Written Off' AS ActivityName,
ADJ.ApplyDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
H.BusinessUnitName AS BusinessUnit,
H.BillToCustomerName AS CustomerName,
H.InvoiceCurrencyCode AS Currency,
ADJ.Amount AS InvoiceAmount,
H.TrxClass AS TransactionType,
ADJ.CreatedBy AS UserName,
'No' AS IsAutomated
FROM STG_AR_ADJUSTMENTS ADJ
JOIN STG_AR_TRX_HEADER H ON ADJ.CustomerTrxId = H.CustomerTrxId
WHERE ADJ.AdjustmentType = 'WRITE_OFF'
UNION ALL
/* 15. Invoice Cleared */
/* The moment the invoice balance hits 0 */
SELECT
TrxNumber AS InvoiceNumber,
'Invoice Cleared' AS ActivityName,
LastUpdateDate AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
BusinessUnitName AS BusinessUnit,
BillToCustomerName AS CustomerName,
InvoiceCurrencyCode AS Currency,
NULL AS InvoiceAmount,
TrxClass AS TransactionType,
LastUpdatedBy AS UserName,
'Yes' AS IsAutomated
FROM STG_AR_TRX_HEADER
WHERE AmountDueRemaining = 0
)
SELECT
InvoiceNumber,
ActivityName,
EventStartDateTime,
SourceSystem,
GETDATE() AS LastDataUpdate,
BusinessUnit,
CustomerName,
Currency,
InvoiceAmount,
TransactionType,
UserName,
IsAutomated
FROM Base_Log
WHERE EventStartDateTime IS NOT NULL
ORDER BY InvoiceNumber, EventStartDateTime Kroki
Zalogujcie się do Oracle Fusion Applications: Przejdźcie do Tools > Reports and Analytics. Kliknijcie Browse Catalog, aby otworzyć interfejs Oracle BI Publisher.
Utwórzcie model danych: Kliknijcie New w lewym górnym rogu i wybierzcie Data Model. W tym obiekcie umieścicie logikę ekstrakcji SQL.
Zdefiniujcie zestaw danych SQL: W drzewie Data Model po lewej stronie kliknijcie Data Sets, a następnie wybierzcie New Data Set > SQL Query.
Skonfigurujcie źródło danych: Nadajcie zestawowi danych nazwę, na przykład
ProcessMining_AR. Jako źródło danych wybierzcieApplicationDB_FSCM(Financials Supply Chain Management). Zapewni to dostęp do wymaganych tabel AR i RA.Wklejcie zapytanie: Skopiujcie cały skrypt SQL z sekcji Query poniżej i wklejcie go w polu SQL Query. Nie zmieniajcie podstawowej logiki, chyba że trzeba zmienić nazwy konkretnych Flexfields (DFF).
Ustawcie parametry: Zapytanie zawiera placeholder
:p_start_date, który służy do filtrowania według daty utworzenia transakcji. Na karcie Parameters w modelu danych utwórzcie parametrp_start_date, ustawcie typ danych Date i wartość domyślną, na przykład01-01-2023.Wyświetlcie dane: Kliknijcie kartę Data, wprowadźcie prawidłową datę parametru i kliknijcie View. Sprawdźcie, czy wynik zawiera wiersze z kolumnami takimi jak
InvoiceNumber,ActivityNameiEventStartDateTime.Zapiszcie model danych: Zapiszcie obiekt w katalogu Shared Folders > Custom, na przykład
/Shared Folders/Custom/ProcessMining/AR_Extract_DM.Zaplanujcie eksport: Aby wyodrębnić dużą ilość danych, kliknijcie Create Report i użyjcie tego modelu danych. W edytorze raportów sprawdźcie, czy układ jest prostą tabelą, a następnie zapiszcie raport. Użyjcie Scheduler, aby uruchomić raport i wyeksportować dane do CSV lub XML.
Przygotujcie plik końcowy: Pobierzcie plik wynikowy. Jeśli jest to CSV, sprawdźcie, czy format daty jest spójny, najlepiej ISO 8601. Prześlijcie plik do ProcessMind i przypiszcie
InvoiceNumberdo Case ID,ActivityNamedo Activity, aEventStartDateTimedo Timestamp.
Konfiguracja
- Źródło danych: Użyjcie
ApplicationDB_FSCM, aby uzyskać dostęp do tabel Financials. - Filtr daty: Zapytanie wykorzystuje
ra_customer_trx_all.creation_date >= :p_start_date. Skonfigurujcie je tak, aby ładować dane z ruchomego okresu, na przykład z ostatnich 12 miesięcy. - Wydajność: W przypadku zbiorów obejmujących ponad 100 000 faktur warto podczas testów dodać limit
ROWNUMlub podzielić ekstrakcję na miesiące. - Filtrowanie jednostki biznesowej: Jeśli organizacja ma kilka jednostek biznesowych, a potrzebne są dane tylko jednej z nich, usuńcie komentarz z wiersza
AND trx.org_id = ...w klauzuliWhere. - Nazwy użytkowników: Zapytanie pobiera nazwy użytkowników na podstawie identyfikatorów
CREATED_BYz tabeliFND_USER. Upewnijcie się, że konto używane do ekstrakcji ma uprawnienia do odczytuFND_USER. - Advanced Collections: Działania „Wysłano przypomnienie o płatności” i „Otrzymano zobowiązanie do zapłaty” korzystają z tabel modułu IEX (Advanced Collections). Jeśli moduł nie jest używany, te zapytania nie zwrócą żadnych wierszy.
Przykładowe zapytanie sql
/* 1. Invoice Created */
SELECT
trx.trx_number AS InvoiceNumber,
'Invoice Created' AS ActivityName,
trx.creation_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'N' AS IsAutomated
FROM
ra_customer_trx_all trx
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
JOIN ar_payment_schedules_all ps ON trx.customer_trx_id = ps.customer_trx_id
LEFT JOIN fnd_user u ON trx.created_by = u.user_id
WHERE
trx.creation_date >= :p_start_date
UNION ALL
/* 2. Invoice Completed */
SELECT
trx.trx_number AS InvoiceNumber,
'Invoice Completed' AS ActivityName,
trx.trx_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'Y' AS IsAutomated
FROM
ra_customer_trx_all trx
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
JOIN ar_payment_schedules_all ps ON trx.customer_trx_id = ps.customer_trx_id
LEFT JOIN fnd_user u ON trx.last_updated_by = u.user_id
WHERE
trx.complete_flag = 'Y'
AND trx.creation_date >= :p_start_date
UNION ALL
/* 3. Invoice Dispatched */
SELECT
trx.trx_number AS InvoiceNumber,
'Invoice Dispatched' AS ActivityName,
COALESCE(trx.printing_original_date, trx.printing_last_printed, trx.last_update_date) AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'Y' AS IsAutomated
FROM
ra_customer_trx_all trx
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
JOIN ar_payment_schedules_all ps ON trx.customer_trx_id = ps.customer_trx_id
LEFT JOIN fnd_user u ON trx.last_updated_by = u.user_id
WHERE
(trx.printing_original_date IS NOT NULL OR trx.printing_count > 0)
AND trx.creation_date >= :p_start_date
UNION ALL
/* 4. Invoice Posted to GL */
SELECT
trx.trx_number AS InvoiceNumber,
'Invoice Posted to GL' AS ActivityName,
MAX(dist.gl_date) AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
'System' AS UserName,
'Y' AS IsAutomated
FROM
ra_customer_trx_all trx
JOIN ra_cust_trx_line_gl_dist_all dist ON trx.customer_trx_id = dist.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
JOIN ar_payment_schedules_all ps ON trx.customer_trx_id = ps.customer_trx_id
WHERE
dist.account_class = 'REC'
AND dist.posting_control_id != -3
AND trx.creation_date >= :p_start_date
GROUP BY
trx.trx_number,
hou.name,
party.party_name,
trx.invoice_currency_code,
ps.amount_due_original,
type.name
UNION ALL
/* 5. Payment Reminder Sent (Advanced Collections) */
SELECT
trx.trx_number AS InvoiceNumber,
'Payment Reminder Sent' AS ActivityName,
dun.creation_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'Y' AS IsAutomated
FROM
iex_dunning_transactions dun
JOIN ar_payment_schedules_all ps ON dun.payment_schedule_id = ps.payment_schedule_id
JOIN ra_customer_trx_all trx ON ps.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
LEFT JOIN fnd_user u ON dun.created_by = u.user_id
WHERE
trx.creation_date >= :p_start_date
UNION ALL
/* 6. Promise to Pay Received */
SELECT
trx.trx_number AS InvoiceNumber,
'Promise to Pay Received' AS ActivityName,
pp.creation_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'N' AS IsAutomated
FROM
iex_promise_details pp
JOIN ar_payment_schedules_all ps ON pp.payment_schedule_id = ps.payment_schedule_id
JOIN ra_customer_trx_all trx ON ps.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
LEFT JOIN fnd_user u ON pp.created_by = u.user_id
WHERE
trx.creation_date >= :p_start_date
UNION ALL
/* 7. Dispute Case Opened */
SELECT
trx.trx_number AS InvoiceNumber,
'Dispute Case Opened' AS ActivityName,
req.creation_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'N' AS IsAutomated
FROM
ra_cm_requests req
JOIN ra_customer_trx_all trx ON req.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
JOIN ar_payment_schedules_all ps ON trx.customer_trx_id = ps.customer_trx_id
LEFT JOIN fnd_user u ON req.created_by = u.user_id
WHERE
trx.creation_date >= :p_start_date
UNION ALL
/* 8. Dispute Resolved */
SELECT
trx.trx_number AS InvoiceNumber,
'Dispute Resolved' AS ActivityName,
req.last_update_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'N' AS IsAutomated
FROM
ra_cm_requests req
JOIN ra_customer_trx_all trx ON req.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
JOIN ar_payment_schedules_all ps ON trx.customer_trx_id = ps.customer_trx_id
LEFT JOIN fnd_user u ON req.last_updated_by = u.user_id
WHERE
req.status_code IN ('APPROVED', 'REJECTED')
AND trx.creation_date >= :p_start_date
UNION ALL
/* 9. Credit Memo Issued */
SELECT
trx.trx_number AS InvoiceNumber,
'Credit Memo Issued' AS ActivityName,
cm.trx_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'N' AS IsAutomated
FROM
ra_customer_trx_all cm
JOIN ra_customer_trx_all trx ON cm.previous_customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
JOIN ar_payment_schedules_all ps ON trx.customer_trx_id = ps.customer_trx_id
LEFT JOIN fnd_user u ON cm.created_by = u.user_id
WHERE
trx.creation_date >= :p_start_date
UNION ALL
/* 10 & 11. Partial and Full Payment */
SELECT
trx.trx_number AS InvoiceNumber,
CASE
WHEN ps.status = 'CL' AND app.amount_applied = app.amount_applied_from THEN 'Full Payment Received'
WHEN ps.status = 'CL' AND ps.amount_due_remaining = 0 AND app.application_rule = '60' THEN 'Full Payment Received'
ELSE 'Partial Payment Posted'
END AS ActivityName,
app.apply_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'N' AS IsAutomated
FROM
ar_receivable_applications_all app
JOIN ar_payment_schedules_all ps ON app.applied_payment_schedule_id = ps.payment_schedule_id
JOIN ra_customer_trx_all trx ON ps.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
LEFT JOIN fnd_user u ON app.created_by = u.user_id
WHERE
app.status = 'APP'
AND app.application_type = 'CASH'
AND trx.creation_date >= :p_start_date
UNION ALL
/* 12. Bank Statement Matched */
SELECT
trx.trx_number AS InvoiceNumber,
'Bank Statement Matched' AS ActivityName,
recon.creation_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'Y' AS IsAutomated
FROM
ce_statement_reconcils_all recon
JOIN ar_cash_receipt_history_all crh ON recon.reference_id = crh.cash_receipt_history_id
JOIN ar_cash_receipts_all cr ON crh.cash_receipt_id = cr.cash_receipt_id
JOIN ar_receivable_applications_all app ON cr.cash_receipt_id = app.cash_receipt_id
JOIN ar_payment_schedules_all ps ON app.applied_payment_schedule_id = ps.payment_schedule_id
JOIN ra_customer_trx_all trx ON ps.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
LEFT JOIN fnd_user u ON recon.created_by = u.user_id
WHERE
recon.status_flag = 'M'
AND trx.creation_date >= :p_start_date
UNION ALL
/* 13 & 14. Invoice Adjusted and Written Off */
SELECT
trx.trx_number AS InvoiceNumber,
CASE
WHEN adj.adjustment_type = 'W' THEN 'Invoice Written Off'
ELSE 'Invoice Adjusted'
END AS ActivityName,
adj.apply_date AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
u.user_name AS UserName,
'N' AS IsAutomated
FROM
ar_adjustments_all adj
JOIN ar_payment_schedules_all ps ON adj.payment_schedule_id = ps.payment_schedule_id
JOIN ra_customer_trx_all trx ON ps.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
LEFT JOIN fnd_user u ON adj.created_by = u.user_id
WHERE
adj.status = 'A'
AND trx.creation_date >= :p_start_date
UNION ALL
/* 15. Invoice Cleared (Final Close) */
SELECT
trx.trx_number AS InvoiceNumber,
'Invoice Cleared' AS ActivityName,
ps.gl_date_closed AS EventStartDateTime,
'Oracle Fusion' AS SourceSystem,
SYSDATE AS LastDataUpdate,
hou.name AS BusinessUnit,
party.party_name AS CustomerName,
trx.invoice_currency_code AS Currency,
ps.amount_due_original AS InvoiceAmount,
type.name AS TransactionType,
'System' AS UserName,
'Y' AS IsAutomated
FROM
ar_payment_schedules_all ps
JOIN ra_customer_trx_all trx ON ps.customer_trx_id = trx.customer_trx_id
JOIN ra_cust_trx_types_all type ON trx.cust_trx_type_id = type.cust_trx_type_id
JOIN hr_operating_units hou ON trx.org_id = hou.organization_id
JOIN hz_cust_accounts cust ON trx.bill_to_customer_id = cust.cust_account_id
JOIN hz_parties party ON cust.party_id = party.party_id
WHERE
ps.status = 'CL'
AND ps.gl_date_closed IS NOT NULL
AND trx.creation_date >= :p_start_date Gotowi do rozpoczęcia?
Zastosujcie ten szablon w środowisku Oracle Fusion, aby przekształcić dane finansowe w informacje przydatne w działaniu. Nasz zespół pomoże dopasować specyfikę procesów biznesowych do tych standardów.
Przyspieszcie windykację należności
Skróćcie DSO o 15–20 dni i ograniczcie luki w przepływach pieniężnych.
Karta kredytowa nie jest wymagana. Konfiguracja zajmuje 5 minut.