Seu Template de Dados de Contas a Receber
Seu Template de Dados de Contas a Receber
- Conjunto abrangente de atributos recomendados para análise de AR
- Atividades centrais e marcos do processo para monitoramento
- Guia de extração específica do sistema para Oracle Fusion Financials
Atributos de Contas a Receber
| Nome | Descrição | ||
|---|---|---|---|
| Event Timestamp EventStartDateTime | A data e hora específicas em que uma atividade ocorreu. | ||
| Descrição Este atributo registra o momento exato em que uma atividade ocorreu no sistema. É usado para ordenar os eventos cronologicamente e é a base para todos os cálculos baseados em tempo no Process Mining. Ao analisar os timestamps, a empresa pode calcular os tempos de ciclo entre as atividades, como a duração entre a criação da fatura e o envio. É crítico para medir KPIs como o DSO (Days Sales Outstanding) e identificar padrões temporais no comportamento de pagamento. Por que é importante Fundamental para calcular duração, lead times e tempos de ciclo. Onde obter Oracle Fusion Financials: colunas CREATION_DATE ou LAST_UPDATE_DATE em várias tabelas de transação. Exemplos 2023-10-15T08:30:00Z2023-10-16T14:45:12Z2023-11-01T09:00:00Z | |||
| Nome da Atividade ActivityName | O evento ou ação específica realizada no processo de contas a receber. | ||
| Descrição Este atributo descreve a etapa realizada no processo, como criar uma fatura, registrar um pagamento ou abrir uma contestação. Ele define o fluxo do mapa do processo e permite a visualização da sequência de eventos. Analistas usam este campo para identificar variantes de processo, loops e gargalos. É essencial para determinar a adesão aos procedimentos operacionais padrão e para calcular a frequência de eventos específicos, como retrabalho ou intervenções manuais. Por que é importante Necessário para definir o fluxo do processo e visualizar a sequência de eventos. Onde obter Derivado de tabelas de histórico (ex: AR_PAYMENT_SCHEDULES_ALL, RA_CUST_TRX_LINE_GL_DIST_ALL). Exemplos Fatura CriadaLembrete de Pagamento EnviadoPagamento Parcial RegistradoCaso de Disputa Aberto | |||
| Número da fatura InvoiceNumber | O identificador exclusivo atribuído à transação da fatura no Oracle Fusion. | ||
| Descrição Este atributo serve como a chave exclusiva para identificar obrigações financeiras no módulo de Contas a Receber. Ele vincula todas as atividades subsequentes, como ajustes, contestações e pagamentos, à transação de venda original. Na análise de Process Mining, este atributo funciona como o Case ID. Ele permite que os analistas rastreiem o ciclo de vida de ponta a ponta de um recebível, desde o momento em que é criado até ser totalmente liquidado ou baixado (write-off), facilitando o cálculo de tempos de ciclo e variantes de processo. Por que é importante É a unidade fundamental de análise para rastrear o ciclo de vida do crédito ao caixa. Onde obter Oracle Fusion Financials: RA_CUSTOMER_TRX_ALL.TRX_NUMBER Exemplos INV-2023-00110056789AR-99887755002211 | |||
| Sistema de Origem SourceSystem | O sistema de registro de onde os dados se originaram. | ||
| Descrição Este atributo identifica o ambiente de software de onde os dados do processo foram extraídos. Neste contexto, ele confirma que os dados vêm do ambiente Oracle Fusion Financials. Embora seja frequentemente um valor estático para uma extração de sistema único, torna-se crucial ao mesclar dados de várias instâncias de ERP ou ao integrar ferramentas de cobrança de terceiros. Isso garante a linhagem dos dados e a rastreabilidade em cenários de processos multi-sistema. Por que é importante Garante a linhagem dos dados e distingue diferentes instâncias de ERP. Onde obter Definido durante a extração ou configurado no pipeline de dados. Exemplos Oracle Fusion FinancialsOracle Cloud ERP - EUAOracle Cloud ERP - EMEA | |||
| Última Atualização de Dados LastDataUpdate | O timestamp de quando os dados foram atualizados pela última vez na ferramenta de mining. | ||
| Descrição Este atributo indica quando o conjunto de dados foi sincronizado pela última vez com o sistema Oracle de origem. Ele ajuda os usuários a entender a atualidade da análise e se os insights refletem o estado atual das operações. Monitorar este campo é importante para garantir que os dashboards exibam informações atualizadas, especialmente para o monitoramento operacional de contestações abertas ou caixa não aplicado. Por que é importante Fornece contexto sobre a atualização e confiabilidade dos dados. Onde obter Hora do sistema no momento da extração. Exemplos 2023-11-15T23:59:59Z2023-11-16T00:00:00Z | |||
| Data de Vencimento DueDate | A data em que o pagamento deve ser recebido. | ||
| Descrição Este atributo é o prazo para o pagamento calculado com base na Data da Fatura e nos Termos de Pagamento. Ele serve como ponto de referência para determinar se um pagamento está atrasado. É utilizado no KPI 'Variância do Tempo de Lembrete de Cobrança' para medir quão proativamente a equipe age em relação ao prazo. Também é o limite para classificar os recebíveis como em dia ou vencidos em relatórios de aging. Por que é importante A base principal para determinar a inadimplência e o desempenho de pontualidade. Onde obter Oracle Fusion Financials: AR_PAYMENT_SCHEDULES_ALL.DUE_DATE Exemplos 2023-11-302023-12-152024-01-01 | |||
| É Automatizado IsAutomated | Sinaliza se a atividade foi realizada sem intervenção humana. | ||
| Descrição Este atributo booleano determina se uma atividade foi executada por um processo do sistema (ex: AutoInvoice, AutoLockbox) ou por um usuário humano. É o principal impulsionador do KPI 'Taxa de Automação de Aplicação de Caixa'. Ao rastrear a proporção de atividades automatizadas em relação às manuais ao longo do tempo, a organização pode validar o sucesso das iniciativas de transformação digital e identificar etapas específicas do processo que permanecem persistentemente manuais. Por que é importante Métrica principal para transformação digital e medição de eficiência. Onde obter Lógica calculada com base no UserName (ex: se User == 'BATCH_USER' então true). Exemplos verdadeirofalse | |||
| Nome do Cliente CustomerName | O nome da entidade faturada na transação. | ||
| Descrição Este atributo identifica o cliente associado à fatura. É fundamental para analisar comportamentos de pagamento, frequência de contestações e eficácia de cobrança em nível de cliente. Analistas usam este campo para identificar clientes específicos que pagam com atraso ou abrem contestações com frequência. Esse insight alimenta o dashboard 'Análise de Comportamento de Pagamento do Cliente' e ajuda a personalizar termos de crédito e estratégias de cobrança para perfis individuais de clientes. Por que é importante Essencial para análise centrada no cliente e perfil de risco. Onde obter Oracle Fusion Financials: HZ_PARTIES.PARTY_NAME vinculado via BILL_TO_CUSTOMER_ID. Exemplos Acme CorpGlobex CorporationSoylent Corp | |||
| Nome do Cobrador CollectorName | O nome do agente de cobrança ou recurso atribuído à fatura. | ||
| Descrição Este atributo identifica o funcionário ou membro da equipe específico responsável por cobrar o pagamento da fatura. É a dimensão principal para o dashboard 'Produtividade do Agente de Cobrança'. Os dados deste campo permitem que a organização meça a produtividade por agente, identifique necessidades de treinamento e equilibre as cargas de trabalho. Isso promove a responsabilidade e ajuda a padronizar os esforços de cobrança em toda a equipe financeira. Por que é importante Essencial para análise de performance de recursos e balanceamento de carga de trabalho. Onde obter Oracle Fusion Financials: AR_COLLECTORS.NAME associado ao Perfil do Cliente. Exemplos John SmithEquipe de Cobrança AJane Doe | |||
| Nome do Utilizador UserName | O usuário do sistema que realizou a atividade. | ||
| Descrição Este atributo registra o ID de login ou o nome da pessoa que executou a atividade específica (ex: registrou a fatura, conciliou o extrato bancário). Ele mapeia para o campo genérico 'Usuário'. Esses dados são vitais para auditorias de conformidade e para o dashboard 'Produtividade do Agente de Cobrança'. Permitem separar ações executadas pelo sistema (frequentemente feitas por um usuário 'System') de ações humanas, apoiando a análise de automação. Por que é importante Permite rastrear performance por usuário e analisar a segregação de funções. Onde obter Oracle Fusion Financials: colunas CREATED_BY ou LAST_UPDATED_BY unidas às tabelas de usuários. Exemplos sysadminjsmithfinance_batch_job | |||
| Segmento de Cliente CustomerSegment | A classificação do cliente com base no tamanho, setor ou risco. | ||
| Descrição Este atributo categoriza os clientes em grupos como Estratégico, Enterprise, PME ou Alto Risco. Geralmente é derivado da classe do cliente ou classe de perfil no Oracle Fusion. O uso deste atributo permite a análise de variantes de processo em diferentes segmentos de mercado. Por exemplo, ajuda a verificar se os clientes 'Estratégicos' estão recebendo o atendimento diferenciado pretendido ou se os clientes de 'Alto Risco' estão sendo monitorados de perto quanto à conformidade de pagamento. Por que é importante Permite análises segmentadas de estratégias de cobrança e risco. Onde obter Oracle Fusion Financials: HZ_CUSTOMER_PROFILES.PROFILE_CLASS_ID. Exemplos EmpresarialPequena EmpresaGovernoAlto Risco | |||
| Tipo de Transação TransactionType | A classificação do documento a receber (Fatura, Nota de Crédito, Nota de Débito). | ||
| Descrição Este atributo distingue entre diferentes tipos de documentos financeiros. Valores comuns incluem Fatura, Nota de Crédito e Nota de Débito. Essa distinção é vital para o dashboard 'Volume e Retrabalho de Notas de Crédito'. Ao filtrar por este atributo, os analistas podem isolar loops de retrabalho causados por notas de crédito ou focar especificamente no fluxo principal de faturamento. Isso ajuda a entender a composição da carga de trabalho de recebíveis. Por que é importante Distingue faturas padrão de ajustes e correções. Onde obter Oracle Fusion Financials: RA_CUST_TRX_TYPES_ALL.NAME Exemplos FaturaNota de CréditoNota de DébitoEstorno | |||
| Unidade de Negócio BusinessUnit | A entidade operacional dentro da organização responsável pela fatura. | ||
| Descrição Este atributo mapeia para o ID da Organização no Oracle Fusion, representando a unidade de negócio ou divisão específica que detém o recebível. Ele permite a segmentação do desempenho do processo em diferentes partes da empresa. Comparar KPIs como Tempo de Resolução de Contestação ou DSO em diferentes unidades de negócio ajuda a liderança a identificar equipes de alto desempenho e padronizar as melhores práticas. Também destaca unidades que podem exigir recursos adicionais ou reengenharia de processos. Por que é importante Dimensão essencial para benchmarking organizacional e comparação de performance. Onde obter Oracle Fusion Financials: HR_ORGANIZATION_UNITS.NAME vinculado via ORG_ID. Exemplos Vendas EUA LesteServiços EMEAManufatura APAC | |||
| Valor da Fatura InvoiceAmount | O valor monetário total da fatura. | ||
| Descrição Este atributo representa o valor original devido na fatura. Ele serve como o principal fator de ponderação para muitas análises, permitindo que a empresa priorize transações de alto valor em relação ao volume de baixo valor. No contexto da visão 'Créditos não Aplicados e Vazamentos', este campo ajuda a quantificar o impacto financeiro de itens não resolvidos. Também é usado para calcular o DSO médio ponderado, fornecendo uma visão mais focada no aspecto financeiro da eficiência do processo. Por que é importante Dá peso financeiro à análise e apoia a priorização baseada em valor. Onde obter Oracle Fusion Financials: RA_CUSTOMER_TRX_ALL.AMOUNT_DUE_ORIGINAL Exemplos 1500.00250.5010000,00 | |||
| Código da Moeda CurrencyCode | A moeda na qual o valor da fatura é expresso. | ||
| Descrição Este atributo especifica a moeda (ex: BRL, USD, EUR) para os valores financeiros. É necessário para interpretar corretamente o Valor da Fatura e para realizar conversões de moeda, caso uma moeda de relatório global seja necessária. Para organizações globais, este atributo ajuda a analisar o desempenho da cobrança em diferentes regiões econômicas e permite que as equipes financeiras separem os impactos cambiais do desempenho do processo operacional. Por que é importante Contextualiza valores financeiros em ambientes multi-moeda. Onde obter Oracle Fusion Financials: RA_CUSTOMER_TRX_ALL.INVOICE_CURRENCY_CODE Exemplos USDEURGBPJPY | |||
| Condições de Pagamento PaymentTerms | As condições acordadas para o prazo de pagamento (ex: Net 30). | ||
| Descrição Este atributo define o prazo de pagamento acordado contratualmente. Ele é usado para calcular a Data de Vencimento e é essencial para o dashboard 'Eficácia da Estratégia de Cobrança'. Variações nos termos de pagamento entre clientes podem explicar diferenças no DSO. Este atributo permite que os analistas normalizem os dados de desempenho, garantindo que um cliente com termos Net 60 não seja sinalizado injustamente como 'pagador lento' em comparação com um com termos Net 30. Por que é importante Contextualiza a velocidade de pagamento em relação aos acordos contratuais. Onde obter Oracle Fusion Financials: RA_TERMS.NAME Exemplos Líquido 30Imediato2/10 Líquido 30Líquido 60 | |||
| Data de Elegibilidade ao Desconto DiscountEligibilityDate | A data limite para o cliente pagar e receber um desconto por pagamento antecipado. | ||
| Descrição Este atributo marca o prazo para o cliente aproveitar termos como '2/10 Net 30' (2% de desconto se pago em 10 dias). É necessário para o dashboard 'Análise de Desconto por Pagamento Antecipado'. A análise de pagamentos em relação a essa data revela a 'Taxa de Captura de Desconto por Pagamento Antecipado'. Ajuda a empresa a entender se suas estratégias de desconto estão efetivamente acelerando o fluxo de caixa ou se estão sendo ignoradas pelos clientes. Por que é importante Apoia a análise da eficácia de incentivos e a aceleração do fluxo de caixa. Onde obter Oracle Fusion Financials: AR_PAYMENT_SCHEDULES_ALL.DISCOUNT_DATE Exemplos 2023-11-102023-12-05 | |||
| Days Sales Outstanding (DSO) DaysSalesOutstanding | O número de dias entre a criação da fatura e a liquidação. | ||
| Descrição Este atributo calculado mede a duração desde 'Invoice Created' até 'Invoice Cleared'. É o cálculo direto para o KPI de 'DSO Médio' (Days Sales Outstanding). Embora isso possa ser calculado dinamicamente nos dashboards, ter isso como um atributo pré-calculado no nível do caso permite filtragem e segmentação mais fáceis (ex: mostrar todos os casos onde o DSO é maior que 60 dias). Por que é importante A métrica definitiva de eficiência para Contas a Receber. Onde obter Calculado: Data(Fatura Liquidada) - Data(Fatura Criada). Exemplos 45 dias12 dias60 dias | |||
| É Retrabalho IsRework | Sinaliza se a fatura passou por ciclos de correção ou disputa. | ||
| Descrição Este atributo booleano identifica se uma fatura passou por atividades associadas à correção de erros, como 'Credit Memo Issued' ou 'Invoice Adjusted'. Ele alimenta o dashboard 'Volume e Retrabalho de Notas de Crédito'. Identificar casos de retrabalho ajuda a isolar os processos de 'fluxo ideal' (happy path) dos problemáticos. Altas taxas de retrabalho são um indicador antecedente de problemas de qualidade de dados na origem, seja nos dados mestres ou nos processos de entrada de pedidos de vendas. Por que é importante Identifica desperdícios e ineficiências no fluxo do processo. Onde obter Calculado: True se o caso contiver 'Credit Memo Issued' ou 'Dispute Case Opened'. Exemplos verdadeirofalse | |||
| Fonte de Criação CreationSource | A origem da fatura, indicando se foi manual ou importada. | ||
| Descrição Este atributo revela como a fatura entrou no sistema Oracle, como 'Manual Entry', 'AutoInvoice' ou via fluxos externos específicos. É um substituto para o mapeamento genérico de 'Canal'. Isso é crucial para o 'Monitor de Automação de Aplicação de Caixa'. Ajuda a distinguir entre processos que são totalmente digitais e aqueles que exigem configuração manual. Volumes altos de 'Entrada Manual' podem indicar falta de integração na origem ou deficiências no sistema. Por que é importante Identifica o nível de automação na origem e a procedência dos dados. Onde obter Oracle Fusion Financials: RA_BATCH_SOURCES_ALL.NAME Exemplos AutoInvoiceManualImplementação de ProjetosGestão de pedidos | |||
| Motivo da Disputa DisputeReason | A categoria ou código de motivo atribuído quando uma contestação é aberta. | ||
| Descrição Este atributo captura a justificativa fornecida quando ocorre uma atividade de 'Dispute Case Opened'. Valores comuns podem incluir 'Erro de Preço', 'Divergência de Quantidade' ou 'Produtos Danificados'. A análise deste atributo no dashboard 'Ciclo de Vida de Contestações e Gargalos' ajuda a identificar causas raiz de atrasos nos pagamentos. Se 'Erro de Preço' for frequente, a empresa sabe que deve investigar o processo de cotação de vendas anterior, em vez de focar apenas no processo de cobrança. Por que é importante Crítico para análise de causa raiz de atrasos e retrabalhos. Onde obter Oracle Fusion Financials: RA_CM_REQUESTS.REASON_CODE ou AR_DISPUTE_HISTORY. Exemplos Contestação de PreçoErro de ImpostoMercadoria Não RecebidaFaturamento Duplicado | |||
| Região Region | Região geográfica associada à unidade de negócio ou ao cliente. | ||
| Descrição Este atributo mapeia a transação para uma área geográfica mais ampla, como América do Norte, EMEA ou APAC. É útil para relatórios executivos de alto nível e para o dashboard 'Tendências de DSO e Ciclo de Caixa'. A análise regional ajuda a considerar diferenças culturais no comportamento de pagamento (ex: termos de pagamento padrão mais longos no sul da Europa vs. EUA) e garante que os KPIs globais sejam interpretados com o contexto local correto. Por que é importante Oferece segmentação geográfica de alto nível para relatórios globais. Onde obter Oracle Fusion Financials: Derivado da Unidade de Negócio ou do Endereço do Cliente. Exemplos América do NorteEMEAAPACLATAM | |||
Atividades de Contas a Receber
| Atividade | Descrição | ||
|---|---|---|---|
| Fatura Compensada | O estado final onde a fatura é fechada no sistema, geralmente porque o saldo é zero devido a pagamento, nota de crédito ou ajuste. | ||
| Por que é importante O timestamp para este evento é usado para calcular o DSO (Days Sales Outstanding). Ele representa o fim da instância do processo. Onde obter Identificado quando o STATUS na AR_PAYMENT_SCHEDULES_ALL muda para 'CL' (Closed). Captura Comparar campo de status antes/depois Tipo de evento inferred | |||
| Fatura Concluída | Indica que a criação da fatura foi finalizada e ela está pronta para processamento, impressão e lançamento. Ocorre quando o status muda de incompleto para completo. | ||
| Por que é importante Diferencia o tempo de rascunho do tempo de processamento. Atrasos aqui indicam gargalos na geração interna do faturamento. Onde obter Identificado quando o COMPLETE_FLAG na RA_CUSTOMER_TRX_ALL muda para 'Y'. Captura Comparar campo de status antes/depois Tipo de evento inferred | |||
| Fatura Criada | Esta atividade marca a criação inicial do registro da fatura no sistema. Ela captura o timestamp de quando o cabeçalho da transação é salvo pela primeira vez nas tabelas do Oracle Receivables. | ||
| Por que é importante Estabelece o início do ciclo de vida e a base para cálculos de aging. Essencial para o tempo total de ciclo e lead time de envio. Onde obter Derivado da tabela RA_CUSTOMER_TRX_ALL usando as colunas CREATION_DATE ou TRX_DATE. Captura Registrado quando a linha da transação é inserida Tipo de evento explicit | |||
| Fatura enviada | Representa o envio da fatura ao cliente via impressão, e-mail ou XML. Isso marca a entrega da organização para o cliente. | ||
| Por que é importante Crítico para medir a performance de envio. O gap entre criação e envio atrasa diretamente o ciclo de recebimento. Onde obter Inferido da PRINTING_ORIGINAL_DATE na RA_CUSTOMER_TRX_ALL ou logs específicos do Oracle Collaboration Messaging Framework. Captura Comparar campo de status antes/depois Tipo de evento inferred | |||
| Pagamento Parcial Registrado | Ocorre quando um recebimento é aplicado à fatura, mas o valor é inferior ao saldo total devedor. Isso mantém a fatura aberta com um saldo reduzido. | ||
| Por que é importante Alta frequência indica comportamento de pagamento fragmentado, o que aumenta o esforço de conciliação. Onde obter Extraído de AR_RECEIVABLE_APPLICATIONS_ALL onde STATUS = 'APP' e AMOUNT_APPLIED < AMOUNT_DUE_REMAINING. Captura Registrado quando a transação X é executada Tipo de evento explicit | |||
| Pagamento Total Recebido | Ocorre quando a aplicação de um recebimento reduz o saldo da fatura a zero. Este é o principal evento de sucesso para o processo de cobrança. | ||
| Por que é importante Crítico para análise de Descontos por Pagamento Antecipado. O timing deste evento determina se o caixa foi coletado dentro da janela de desconto. Onde obter Extraído de AR_RECEIVABLE_APPLICATIONS_ALL onde STATUS = 'APP' e o AMOUNT_DUE_REMAINING resultante é 0. Captura Derivado da comparação entre os campos X e Y Tipo de evento calculated | |||
| Caso de Disputa Aberto | Marca o início de uma contestação formal sobre a fatura. Isso interrompe as atividades de cobrança padrão enquanto o problema é investigado. | ||
| Por que é importante Principal indicador de gargalo. Altas taxas de contestação sugerem problemas de qualidade na origem, seja no atendimento ou na precisão do faturamento. Onde obter Identificado por registros na RA_CM_REQUESTS_ALL ou fluxos de solicitação de nota de crédito vinculados à fatura. Captura Registrado quando a transação X é executada Tipo de evento explicit | |||
| Disputa Resolvida | Indica a conclusão da investigação da disputa. O resultado pode ser a aprovação da nota de crédito ou sua rejeição. | ||
| Por que é importante Necessário para calcular o Tempo Médio de Resolução de Contestações. Tempos longos de resolução impactam negativamente a satisfação do cliente e o DSO. Onde obter Derivado da mudança de status para 'APPROVED' ou 'REJECTED' em RA_CM_REQUESTS_ALL. Captura Comparar campo de status antes/depois Tipo de evento inferred | |||
| Extrato Bancário Conciliado | Indica que o recebimento aplicado à fatura foi conciliado com o extrato bancário, confirmando que o dinheiro entrou na conta. | ||
| Por que é importante Mede a automação da aplicação de caixa. O intervalo entre o registro do pagamento e a conciliação bancária representa o caixa não confirmado. Onde obter Vinculado da AR_CASH_RECEIPTS_ALL para CE_STATEMENT_LINES (Cash Management) via referência de conciliação. Captura Comparar campo de status antes/depois Tipo de evento inferred | |||
| Fatura Ajustada | Captura ajustes manuais no saldo da fatura, como pequenas baixas ou ajustes cambiais, distintos de notas de crédito. | ||
| Por que é importante Ajuda a identificar perdas de receita e caminhos não padronizados onde os saldos são baixados sem pagamento. Onde obter Extraído da tabela AR_ADJUSTMENTS_ALL vinculada à fatura. Captura Registrado quando a transação X é executada Tipo de evento explicit | |||
| Fatura Baixada (Write-off) | Um tipo específico de ajuste onde o saldo restante é considerado incobrável e baixado como dívida perdida. Este é um estado terminal negativo. | ||
| Por que é importante Crítico para monitorar a saúde financeira. Separa a eficiência operacional (velocidade de pagamento) de problemas de qualidade de crédito. Onde obter Extraído de AR_ADJUSTMENTS_ALL onde o tipo de ajuste é classificado como 'Write-off' ou vinculado a uma conta de Devedores Duvidosos. Captura Registrado quando a transação X é executada Tipo de evento explicit | |||
| Fatura Lançada no GL | Registra o evento onde os lançamentos contábeis da fatura são finalizados e transferidos para o Razão Geral (GL). Isso garante a conformidade financeira e a prontidão para o fechamento do período. | ||
| Por que é importante Embora não afetem a visão do cliente, os atrasos aqui impactam o ciclo de fechamento financeiro e a pontualidade dos relatórios. Onde obter Derivado do GL_DATE na tabela RA_CUST_TRX_LINE_GL_DIST_ALL. Captura Registrado quando a transação X é executada Tipo de evento explicit | |||
| Lembrete de Pagamento Enviado | Captura a emissão de uma carta de cobrança ou lembrete ao cliente. Este evento é gerado pelo módulo Advanced Collections. | ||
| Por que é importante Essencial para analisar a eficácia da estratégia de cobrança. Correlacionar isso com os pagamentos ajuda a determinar quais estratégias trazem retorno mais rápido. Onde obter Localizado nas tabelas IEX_DUNNING ou IEX_STRATEGY_WORK_ITEMS vinculadas à conta do cliente. Captura Registrado quando a transação X é executada Tipo de evento explicit | |||
| Nota de Crédito Emitida | Captura a criação de uma nota de crédito aplicada à fatura. Isso reduz o saldo devedor, geralmente em resposta a uma disputa ou devolução. | ||
| Por que é importante Rastreia a Taxa de Retrabalho de Notas de Crédito e vazamentos de receita. Notas de crédito frequentes indicam erros sistêmicos de faturamento. Onde obter Extraído de RA_CUSTOMER_TRX_ALL onde TRX_TYPE é Nota de Crédito e RELATED_CUSTOMER_TRX_ID corresponde à fatura. Captura Registrado quando a transação X é executada Tipo de evento explicit | |||
| Promessa de Pagamento Recebida | Registra um compromisso do cliente em pagar um valor específico em uma data determinada. Normalmente, é inserido manualmente por um agente de cobrança durante a interação com o cliente. | ||
| Por que é importante Chave para análise do comportamento de pagamento. Promessas quebradas indicam alto risco de crédito e possível inadimplência futura. Onde obter Extraído da tabela IEX_PROMISE_DETAILS no módulo de Cobranças (Collections). Captura Registrado quando a transação X é executada Tipo de evento explicit | |||
Guias de Extração
Etapas
Acesse o console do Oracle BI Cloud Connector (BICC). Vá para a seção Manage Offerings and Data Stores.
Configure a Conexão de Armazenamento. Certifique-se de ter uma conexão válida com o Oracle Universal Content Management (UCM) ou um Object Storage externo (como o OCI Object Storage) onde os arquivos CSV/Parquet serão depositados.
Selecione a Oferta Financials. Localize a oferta de Financials para acessar os View Objects de Contas a Receber.
Selecione e Configure os View Objects (VOs). Escolha os Public View Objects (PVOs) específicos para construir o event log. Os PVOs essenciais incluem:
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.TransactionHeaderExtractPVO (Cabeçalhos de Faturas)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.TransactionLineExtractPVO (Linhas de Faturas)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.ReceiptApplicationExtractPVO (Pagamentos e Aplicações de CM)
- FscmTopModelAM.FinExtractAM.ArBiccExtractAM.AdjustmentExtractPVO (Ajustes e Write-offs)
- FscmTopModelAM.FinExtractAM.IexBiccExtractAM.PromiseDetailExtractPVO (Promessas de Pagamento)
- FscmTopModelAM.FinExtractAM.IexBiccExtractAM.StrategyWorkItemExtractPVO (Cobranças/Lembretes)
Defina os Critérios de Filtro. No Manage Extract Schedules ou na configuração do PVO, aplique um filtro em CreationDate ou LastUpdateDate para extrair dados do período de análise (ex: últimos 12 meses).
Agende a Extração. Crie um agendamento para executar essas extrações diariamente. Escolha 'Incremental Load' para buscar apenas dados alterados após a carga inicial completa.
Download e Ingestão. Utilize um script automatizado ou ferramenta de integração para coletar os arquivos do UCM/Object Storage e carregá-los nas tabelas de staging do seu data warehouse (ex: STG_AR_TRX_HEADER, STG_AR_APPLICATIONS).
Aplique a Lógica de Transformação. Execute o script SQL fornecido na seção de Query contra suas tabelas de staging para achatar os dados relacionais no formato de event log do ProcessMind.
Valide os Tipos de Dados. Garanta que campos de data sejam convertidos para objetos datetime e que valores numéricos tratem as decimais corretamente durante a transformação.
Exporte para CSV/Parquet. Exporte o conjunto de dados final do seu data warehouse em um arquivo único.
Upload no ProcessMind. Importe o arquivo mapeando InvoiceNumber como Case ID, ActivityName como Activity e EventStartDateTime como Timestamp.
Configuração
- Frequência de Extração: Recomenda-se a extração diária (Incremental) para capturar as alterações de status mais recentes.
- Carga Inicial: Selecione 'Full Extract' para a primeira execução e depois mude para 'Incremental' com base na Data de Última Atualização.
- PVOs Principais: TransactionHeaderExtractPVO, ReceiptApplicationExtractPVO, AdjustmentExtractPVO, StrategyWorkItemExtractPVO.
- Filtro de Data: Aplique filtros em CreationDate >= '202X-01-01' para limitar o volume de dados.
- Fetch Size: O padrão geralmente é 50.000 linhas; ajuste conforme a largura de banda da rede se estiver usando o download via UCM.
- Chaves Primárias: Certifique-se de que seu data warehouse de destino trate upserts usando as Chaves Primárias do PVO (geralmente CustomerTrxId, ReceivableApplicationId, etc.) para evitar duplicidade de linhas.
- Histórico de Auditoria: Os PVOs padrão do BICC capturam o estado atual. Para obter timestamps históricos exatos de mudanças de status (como Dispute Opened), pode ser necessário habilitar as Políticas de Auditoria no Fusion e extrair os Audit View Objects, caso as tabelas transacionais não mantenham o histórico.
a Consulta de Exemplo config
/*
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 Etapas
Acesse o Oracle Fusion Applications: Vá em Tools > Reports and Analytics. Clique em Browse Catalog para abrir a interface do Oracle BI Publisher.
Crie o Data Model: Clique em New (canto superior esquerdo) e selecione Data Model. Este é o contêiner para sua lógica de extração SQL.
Defina o SQL Data Set: Na árvore do Data Model à esquerda, clique em Data Sets, depois selecione New Data Set > SQL Query.
Configure a Fonte de Dados: Dê um nome ao conjunto de dados (ex:
ProcessMining_AR). SelecioneApplicationDB_FSCM(Financials Supply Chain Management) como Data Source. Isso garante o acesso às tabelas de AR e RA necessárias.Cole a Query: Copie o script SQL completo fornecido na seção de Query abaixo e cole-o na caixa de texto SQL Query. Não altere a lógica principal, a menos que precise renomear Flexfields (DFFs) específicos.
Defina os Parâmetros: A query inclui um marcador
:p_start_datepara filtrar pela data de criação da transação. Na aba Parameters do Data Model, crie um novo parâmetro chamadop_start_date, Data Type: Date, e defina um valor padrão (ex:01-01-2023).Visualize os Dados: Clique na aba Data, insira uma data válida para o parâmetro e clique em View. Verifique se a saída contém linhas com colunas como
InvoiceNumber,ActivityNameeEventStartDateTime.Salve o Data Model: Salve o objeto no seu diretório Shared Folders > Custom (ex:
/Shared Folders/Custom/ProcessMining/AR_Extract_DM).Agende/Exporte: Para extrair grandes volumes, clique em Create Report usando este Data Model. No editor de relatório, verifique se o layout é uma tabela simples. Salve o relatório. Em seguida, use o Scheduler para executar o relatório e gerar os dados em CSV ou XML.
Formatação Final: Baixe o arquivo gerado. Se for CSV, garanta que o formato de data esteja consistente (preferencialmente ISO 8601). Faça o upload deste arquivo no ProcessMind mapeando
InvoiceNumbercomo Case ID,ActivityNamecomo Activity eEventStartDateTimecomo Timestamp.
Configuração
- Data Source: Use
ApplicationDB_FSCMpara acessar as tabelas financeiras. - Filtro de Data: A query utiliza
ra_customer_trx_all.creation_date >= :p_start_date. Configure este parâmetro para carregar dados em uma janela móvel (ex: últimos 12 meses). - Performance: Para conjuntos de dados que excedam 100.000 faturas, considere adicionar um limite
ROWNUMdurante os testes ou segmentar a extração por mês. - Filtro de Unidade de Negócio (BU): Se a sua organização possui múltiplas BUs e você precisa de apenas uma, remova o comentário da linha
AND trx.org_id = ...nas cláusulasWhere. - Nomes de Usuário: A query resolve os IDs de usuário
CREATED_BYpara nomes reais viaFND_USER. Certifique-se de que o usuário de extração tenha permissão de leitura emFND_USER. - Advanced Collections: As atividades 'Payment Reminder Sent' e 'Promise to Pay Received' dependem das tabelas do módulo IEX (Advanced Collections). Se você não utiliza este módulo, estas seções simplesmente retornarão zero linhas.
a Consulta de Exemplo 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